Apache POI не возвращает нужное количество листов - PullRequest
0 голосов
/ 04 ноября 2019

Я использую Apache POI для работы с электронными таблицами, и мне нужно выдать исключение, если электронная таблица имеет более одного листа. Проблема заключается в том, что если файл является .xlsx, он работает нормально, но если файл является .xls, он всегда дает размер 0. Это код:

public void validateSpreadsheet(String ext) {
if (ext.equals("xls") || ext.equals("xlsx") || ext.equals("xlsm")) {
   Workbook myWorkBook;
                try {
                    if (ext.equals("xls")) {
                        myWorkBook = new HSSFWorkbook();
                    } else {
                        myWorkBook = new XSSFWorkbook();
                    }

                } catch (POIXMLException ex) {
                    throw ProdutoExceptions.OOXML_NOT_ALLOWED;
                }
                if(myWorkBook.getNumberOfSheets() > 1){
                    throw ProdutoExceptions.INVALID_NUMBER_OF_SHEETS;
                }
}

1 Ответ

1 голос
/ 04 ноября 2019

переименовывайте, убедитесь, что вы используете HSSF для чтения файлов .xls и XSSF в файлы .xlsx

HSSF - это чистая Java-реализация проекта формата Excel 97-2007 (.xls) проекта POI. XSSF - это чистая Java-реализация проекта формата Excel 2007 (.xlsx) на Java.

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