Apache POI中的Excel工作表名称(无“用户”模型)

时间:2019-04-15 06:30:30

标签: apache-poi

我需要快速扫描大量工作簿,这可以通过

完成。
    OPCPackage pkg = OPCPackage.open(filename);
    XSSFReader r = new XSSFReader(pkg);
    SharedStringsTable sst = r.getSharedStringsTable();
    Iterator<InputStream> sheets = r.getSheetsData();

但是,在Excel .xlsx文件中,工作表名称不在工作表XML中。由于Microsoft最著名的原因,它们是_rels结构的双重间接对象。

那么如何使他们获得poi?

以下方法有效,但是速度很慢。例如。扫描7兆工作簿从4秒缩短到19秒。

        FileInputStream is = new FileInputStream(filename);
        Workbook wb = new XSSFWorkbook(is);
        for (int sx=0; sx<wb.getNumberOfSheets(); sx++) {
            System.out.println("Sheet: " + sx + " " + wb.getSheetName(sx));
        }

那么如何有效地做到这一点?而且如果效率低下,两种方法的工作表顺序是否相同?

(POI本身对于.xls二进制格式非常有用。对于.xlsx,仅打开zip并处理XML原始文件可能会更好。但是要感谢POI团队提供了它。)

0 个答案:

没有答案