我想在java中使用Apache POI从URL读取excel文件。我使用了这样的代码:
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
知道为什么会这样吗?我在将网址转换为流时做错了吗?
我已经将excel下载到本地磁盘并使用FileInputStream
创建了POI对象,它运行正常。因此我认为excel没有问题。读取URL流的代码应该存在一些问题。
答案 0 :(得分:1)
您应该转到较新版本的POI。较旧版本的POI对输入流上的缓冲比对新缓冲更敏感。我相信3.7应该完全修复。
如果可以,请转到POI 3.8 beta 2或3.7 Final。您可能会发现3.2的改进超过2.5,但它们都是相当旧的版本,因此我无法确定。
如果你必须坚持使用非常旧的版本,你需要自己做一些缓冲。在调用POI之前,请确保至少前4个块(2048个字节)可用。
答案 1 :(得分:0)
尝试使用Google搜索无法读取整个标头; 0字节读取;预计512字节
很多点击提到了POI,其中一个特别提到了阅读旧的Excel(95)文件。试过通过网址打开另一个文件?