使用 POI 从 URL 读取 Excel 文件

发布于 2024-11-07 18:33:24 字数 470 浏览 0 评论 0原文

我想使用 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 another header;读取 0 字节;预计 512 字节 知道为什么会发生这种情况吗?我在将 url 转换为流时做错了什么吗?

我已将 Excel 下载到本地磁盘并使用 FileInputStream 创建 POI 对象,它工作正常。所以我认为excel没有问题。应该是读取URL流的代码有问题。

I want to read an excel file from a URL using Apache POI in java. I used the code like this :

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

This is giving me an exception :: java.io.IOException: Unable to read entire header; 0 bytes read; expected 512 bytes
Any idea why this is happening? Am I doing something wrong in converting the url to stream?

I had downloaded the excel to the local disk and created the POI object using FileInputStream and it works fine. Hence I think there is no problem with the excel. It should be some problem with the code reading the URL stream.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

够运 2024-11-14 18:33:24

您应该迁移到较新版本的 POI。旧版本的 POI 比新版本对输入流上的缓冲更敏感。我相信 3.7 应该可以完全修复这个问题。

如果可以的话,请转到 POI 3.8 beta 2 或 3.7 Final。您可能会发现 3.2 比 2.5 有所改进,但它们都是相当旧的版本,所以我不能确定。

如果您必须坚持使用非常旧的版本,则需要自己进行一些缓冲。在调用 POI 之前,请确保至少前 4 个块(2048 字节)可用。

You should move to a newer version of POI. Older versions of POI were more sensitive to buffering on the input stream than newer ones were. I believe that with 3.7 it ought to be fully fixed.

If you can, move to POI 3.8 beta 2, or 3.7 Final. You may find 3.2 an improvement over 2.5, but they're both quite old releases so I can't be sure.

If you must stick with a very old version, you'll need to do some buffering yourself. Make sure at least the first 4 blocks (2048 bytes) are available before calling POI.

帝王念 2024-11-14 18:33:24

尝试谷歌搜索无法读取整个标题;读取 0 字节;预期 512 字节

很多点击都提到了 POI,其中一个特别提到了有关读取较旧的 Excel (95) 文件的内容。尝试通过 URL 打开不同的文件?

Try Googling Unable to read entire header; 0 bytes read; expected 512 bytes

Lots of hits mention POI and one in particular mentioned something about reading older Excel (95) files. Tried opening a different file through an url?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文