使用 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 Workbook
有 getSheet(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())
给你
我有一个 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 Workbook
有 getSheet(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())
给你