繁体   English   中英

如何使用OPCPackage POI阅读特定的工作表

[英]How to read specific worksheet using OPCPackage POI

假设我有一个由三个工作表组成的xlsx文件。 使用此代码段,我可以读取整个xlsx文件,即所有三个工作表,其中每行用方括号分隔,每个单元格用逗号分隔。

public static List<List<String>> excelProcess(File xlsxFile) throws Exception {
    int minColumns = -1;
    // The package open is instantaneous, as it should be.
    OPCPackage p = OPCPackage.open(xlsxFile.getPath(), PackageAccess.READ);
    XLSXParse xlsx2csv = new XLSXParse(p, System.out, minColumns);
    xlsx2csv.process();
    System.out.println("row list===="+xlsx2csv.getRowList().size());
    return xlsx2csv.getRowList();
}

xlsxFile是xlsx文件的路径。 但是我只想要一个特定工作表的数据,例如worksheet2,所以我也会像下面一样传递工作表名称。

public static List<List<String>> excelProcess(File xlsxFile,String sheetName) throws Exception {

这里sheetName是特定工作表的名称。

您似乎没有使用任何内置的Apache POI代码进行解析,因此您需要直接切换为使用POI!

拥有后,如果您查看Workbook上的方法,您将看到有一些方法可以让您按名称按索引获取给定的工作表

您的代码将如下所示

public static List<List<String>> excelProcess(File xlsxFile, String sheetName) 
              throws Exception {
    Workbook wb = WorkbookFactory.create(xlsxFile);
    Sheet sheet = wb.getSheet(sheetName);

    // process sheet contents here

    // eg something like
    DataFormatter formatter = new DataFormatter();
    for (Row r : sheet) {
       for (Cell c : r) {
          System.out.println(formatter.formatCellValue(c));
       }
    }
}

请参阅Usermodel文档以及遍历行和单元格文档以开始使用Apache POI处理文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM