使用POI读取EXCEL中的所有Sheet表

2,036 阅读1分钟

使用POI读取EXCEL中的所有Sheet表

最近接触到了多sheet页的导入导出功能,现举例如何 使用POI,通过多个循环读取EXCEL中的所有Sheet表内容。

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>ooxml-schemas</artifactId>
            <version>1.4</version>
        </dependency>
        <!--            <dependency>-->
        <!--                <groupId>org.apache.poi</groupId>-->
        <!--                <artifactId>poi-ooxml-schemas</artifactId>-->
        <!--                <version>4.1.2</version>-->
        <!--            </dependency>-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>5.2.2</version>
            <scope>compile</scope>
        </dependency>
//自己编写的类
    public static void main(String[] args) {
        try {
            showExcel();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static  void showExcel() throws Exception {
        XSSFWorkbook workbook=new XSSFWorkbook(new FileInputStream(new File("C:/Users/PQB031/Downloads/project_base_info_import (1).xlsx")));
        XSSFSheet sheet=null;
        for (int i = 0; i < workbook.getNumberOfSheets(); i++) {//获取每个Sheet表
            sheet=workbook.getSheetAt(i);
            for (int j = 0; j < 3; j++) {
                //获取每行
                XSSFRow row=sheet.getRow(j);
                for (int k = 0; k <4; k++) {
                    //到当前页没有此列请结束否则会报错
                    if (j==2&&k==0&&i==1){
                        break;
                    }
                    //获取每个单元格
                    System.out.print(row.getCell(k)+"\t("+j+","+k+")\t");
                }
                System.out.println("---Sheet表"+i+"处理完毕---");
            }
        }
    }

*1.稍加改造可读取指定页,单元格

*2.注意excel.后缀创建对象不同

Workbook wb=new HSSFWorkbook(new FileInputStream(new File("/file/student.xls")));//.xls
Workbook wb=new XSSFWorkbook(new FileInputStream(new File("/file/student.xls")));//.xlsx

*3.Office版本过低使用XSSFWorkbook就能解决报错(.xls和.xlsx都能解决)

org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)

点击连接查看报错处理详情:[(116条消息) 解决excel导入异常:org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be__修铁路的的博客-CSDN博客_org.apache.poi.poifs.filesystem.officexmlfileexcep](blog.csdn.net/sinat_35626… The supplied data appears to be in the Office 2007%2B XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call&spm=1018.2226.3001.4187)

Workbook详细教程链接

(116条消息) POI(excel) - WorkBook和Sheet_流烟默的博客-CSDN博客_poi workbook