1. 程式人生 > >java讀取excel中的資料

java讀取excel中的資料

 在工作中,遇到需要將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行的單元格。第一個引數表示列數,第二個引數表示行。