java讀取excel中的資料
阿新 • • 發佈:2018-12-20
在工作中,遇到需要將excel表中的特定資料提取出來,並將資料以鍵值對的形式儲存到map集合中。
因為我用的是maven管理的jar包,所以需要匯入的依賴:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency> <!-- 處理excel和上面功能是一樣的--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.10</version> </dependency>
具體實現程式碼如下:
import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import java.io.*; import java.util.LinkedHashMap; import java.util.Map; public class ReadExcel { public Map readExcel(File file) { try { InputStream is = new FileInputStream(file.getAbsolutePath()); Workbook wb = Workbook.getWorkbook(is); // Excel的頁籤數量 int sheet_size = wb.getNumberOfSheets(); for (int index = 0; index < sheet_size; index++) { LinkedHashMap<String, String> map = new LinkedHashMap<String, String>(); // 每個頁籤建立一個Sheet物件 Sheet sheet = wb.getSheet(index); System.out.println("返回該頁的總行數" + sheet.getRows()); for (int i = 1; i < sheet.getRows(); i++) { // sheet.getColumns()返回該頁的總列數 // for (int j = 0; j < sheet.getColumns(); j++) { String cellinfo1 = sheet.getCell(2, i).getContents(); String cellinfo2 = sheet.getCell(1, i).getContents(); map.put(cellinfo2, cellinfo1); } return map; } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } public static void main(String[] args) throws Exception { ReadExcel obj = new ReadExcel(); File file = new File("E:/test.xls"); Map excelMap = obj.readExcel(file); }
另外,此程式碼只能操作檔案型別是.xls的excel檔案,。xlsx型別的不支援,但是可以在excel中將檔案另存為.xls型別的excel檔案,也可以進行對生成說的新檔案進行讀取操作。
String cellinfo1 = sheet.getCell(2, i).getContents();
在sheet.getCell(2, 4).getContents()方法,獲取指定單元格的內容,excel中的第一行,第一列實際上在程式中都是從0開始的,比如說getCell(2,4)就是excel中的第3列,第5行的單元格。第一個引數表示列數,第二個引數表示行。