Извлечение текста из файла xlsx с несколькими листами на основе заданного имени листа с использованием apache poi - PullRequest
1 голос
/ 07 февраля 2020

У меня есть файл 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");

Может ли кто-нибудь помочь мне, если есть какой-либо метод, с помощью которого я могу извлечь текст, дав имена листов, для которых я хочу извлечь данные.

1 Ответ

1 голос
/ 07 февраля 2020

Конечно

Класс 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())

здесь Вы go

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...