讀取2007以上版本的excel(xslx格式)

maven項目依賴jar包java

    <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.15</version>
        </dependency>
        <dependency>  
            <groupId>org.apache.commons</groupId>  
                    <artifactId>commons-collections4</artifactId>  
            <version>4.1</version>  
        </dependency> 

Java工具類 及main方法測試apache

package com.common.util.report;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcelXlsx {
    public static void main(String[] args) throws IOException {
        try {  //傳入的參數依次是:文件的位置、不須要讀取的文件前幾行、須要讀取的文件每一行的前幾個單元格
            List<List<String>> list = ReadExcelXlsx.getXlslValue("D://gzzl//P020171017348216851435.xlsx", 3,3);
            System.err.println(list.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * @param path   xlsx文件的位置
     * @param breakNum   讀取文件的時候,不讀取文件的前幾行
     * @param colNum   讀取文件的時候讀取文件的每一行的前幾列
     * @return
     * @throws Exception
     */
    public static List<List<String>> getXlslValue(String path,int breakNum,int colNum) throws Exception{
        List<List<String>> allList = new ArrayList<List<String>>();  //存放整個excel
        InputStream is = new FileInputStream(path);
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
        // 獲取每個工做薄
        for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
            if (xssfSheet == null) {
                continue;
            }
            
            for (int rowNum = 0; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {// 獲取當前工做薄的每一行
                List<String> temp = new ArrayList<String>();  //每一行是一個list
                if(rowNum<breakNum) {  //不讀取excel文件的前幾行 
                    continue;
                }
                XSSFRow xssfRow = xssfSheet.getRow(rowNum);
                if (xssfRow != null) {
                    for(int m= 0;m < colNum; m++) { //讀取每一行的每個單元格
                        temp.add(getValue(xssfRow.getCell(m)));  //getCell爲讀取每個單元格,並加入list集合
                    }
                    allList.add(temp);  //將讀取的每一行的list 加入整個文檔的list   allList中存放的是整個文檔數據
                }
            }
        }
        return allList;
    }
    
    
     private static String getValue(XSSFCell xssfRow) {
            if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) {
                return String.valueOf(xssfRow.getBooleanCellValue());
            } else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) {
                return String.valueOf(xssfRow.getNumericCellValue());
            } else {
                return String.valueOf(xssfRow.getStringCellValue());
            }
        }

}
相關文章
相關標籤/搜索