【问题标题】:Text Extraction from xlsx file having multiple sheets based on given sheet name using apache poi使用 apache poi 基于给定工作表名称从具有多个工作表的 xlsx 文件中提取文本
【发布时间】:2020-02-07 17:16:52
【问题描述】:

我有一个 xlsx 文件,其中包含大约 150 张纸。我只需要提取其中 30 张的文本,我尝试了下面的代码,但这会提取所有工作表的文本。

            try (InputStream inp = new FileInputStream(filePath)) {
            OPCPackage d=OPCPackage.open(inp);
            XSSFWorkbook wb = new XSSFWorkbook(d);
            XSSFExcelExtractor extractor = new XSSFExcelExtractor(wb);
            extractor.setFormulasNotResults(true);
            extractor.setIncludeSheetNames(false);
            String text = extractor.getText().replaceAll("\\t"," ").replaceAll("%","");
            lines =text.split("\n");

如果有任何可用的方法可以通过提供我要提取数据的工作表名称来提取文本,有人可以帮助我。

【问题讨论】:

标签: java excel apache-poi text-extraction


【解决方案1】:

当然

Workbook 有方法getSheet(String name) 返回Sheet 实例。 我不记得正确的类名,但你可以写这样的东西

List<String> sheetNames = List.of("sheet1", "sheet2", .... );
List<Sheet> sheets = new ArrayList<>();
sheetNames.forEach(nm -> sheets.add(workbook.getSheet(nm)));

那么您可能想要过滤掉空值(当未找到工作表时)

sheets = sheets.stream().filter(s -> Objects.notNull(s)).collect(Collectors.toList())

给你

【讨论】:

  • 我能够使用它获得所需的工作表,但 XSSFExcelExtractor 方法仅接受工作簿类型参数。我现在需要一张一张地提取所选工作表的文本。
猜你喜欢
  • 2017-03-28
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 2019-04-16
  • 1970-01-01
相关资源
最近更新 更多