процесс файла xlsx с apache poi дает исключение - PullRequest
0 голосов
/ 24 марта 2019

Я использую apache poi для чтения файла Excel и его обработки.

Это то, что я делаю на высоком уровне

CloseableHttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet("http://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx");
HttpResponse response = client.execute(request); 
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();  
Workbook wb = WorkbookFactory.create(inputStream);

Но я получаю исключение, когда create вызывает

java.lang.IllegalArgumentException: InputStream of class class org.apache.commons.compress.archivers.zip.ZipArchiveInputStream is not implementing InputStreamStatistics.
    at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.<init>(ZipArchiveThresholdInputStream.java:63)

Это происходит только с файлами xlsx. Вот как выглядит метод создания в poi jar

public static Workbook create(InputStream inp, String password) throws IOException, EncryptedDocumentException {
        InputStream is = FileMagic.prepareToCheckMagic(inp);
        FileMagic fm = FileMagic.valueOf(is);

        switch (fm) {
            case OLE2:
                POIFSFileSystem fs = new POIFSFileSystem(is);
                return create(fs, password);
            case OOXML:
                return createXSSFWorkbook(is);
            default:
                throw new IOException("Your InputStream was neither an OLE2 stream, nor an OOXML stream");
        }
    }

В xlsx он создает XSSFWorkbook

Но тот же сценарий, который я тестировал на примере проекта Java, и он работает. Это исключение только приходит с другим проектом, который является проектом весенней загрузки с undertow. Зависимость обоих проектов, таких как poi и commons.compress, одинакова. Я не могу понять, почему его дает это исключение только в этом проекте

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