使用 apache poi 根据给定的 sheet 名称从具有多个 sheet 的 xlsx 文件中提取文本

Text Extraction from xlsx file having multiple sheets based on given sheet name using apache poi

我有一个 xlsx 文件,其中包含大约 150 sheets。我只需要提取其中 30 个 sheet 的文本,我已经尝试了下面的代码,但这会提取所有 sheet 的文本。

            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");

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

当然

Class WorkbookgetSheet(String name) 方法 returns Sheet 实例。 我不记得正确的 class 名字,但你可以这样写

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

然后您可能想要过滤掉空值(当 sheet 未找到时)

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

给你