Чтение файла Excel из URL с использованием POI - PullRequest
0 голосов
/ 18 мая 2011

Я хочу прочитать файл Excel с URL-адреса, используя Apache POI в Java.Я использовал такой код:

String urlStr = "<url>";
URL url = new URL(urlStr);
URLConnection uc = url.openConnection();
HSSFWorkbook wb = new HSSFWorkbook(uc.getInputStream())

Это дает мне исключение :: java.io.IOException: Unable to read entire header; 0 bytes read; expected 512 bytes Есть идеи, почему это происходит?Я делаю что-то не так при преобразовании URL в поток?

Я скачал Excel на локальный диск и создал объект POI, используя FileInputStream, и он работает нормально.Поэтому я думаю, что нет никаких проблем с Excel.Должна быть некоторая проблема с кодом, читающим поток URL.

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Вы должны перейти на более новую версию POI. Старые версии POI были более чувствительны к буферизации входного потока, чем более новые. Я считаю, что с 3.7 это должно быть полностью исправлено.

Если можете, перейдите к POI 3.8 beta 2 или 3.7 Final. Вы можете найти 3.2 улучшение по сравнению с 2.5, но оба они довольно старые версии, поэтому я не уверен.

Если вам нужно придерживаться очень старой версии, вам нужно сделать некоторую буферизацию самостоятельно. Убедитесь, что по крайней мере первые 4 блока (2048 байт) доступны перед вызовом POI.

0 голосов
/ 18 мая 2011

Попробуйте поискать в Google Невозможно прочитать весь заголовок;Прочитано 0 байт;ожидается 512 байт

Во многих обращениях упоминается POI, а в одном упоминается что-то о чтении старых файлов Excel (95).Пробовал открывать другой файл через URL?

...