从xlsx文件中提取文本,该文件基于使用apache poi的给定工作表名称具有多个工作表



我有一个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");

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

当然

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())

给你