gpt4 book ai didi

java - header 签名无效;在 excel 文档上使用 Apache POI 的 IOException

转载 作者:搜寻专家 更新时间:2023-10-30 19:59:39 25 4
gpt4 key购买 nike

我得到:

java.io.IOException: Invalid header signature; read 0x000201060000FFFE, expected 0xE11AB1A1E011CFD0

尝试使用 apache POI HPSF 将一些自定义属性添加到 Excel 文档时。

我完全确定该文件是 Excel OLE2(不是 HTML、XML 或 Excel 不会提示的其他内容)。

这是我代码的相关部分:

try {
final POIFSFileSystem poifs = new POIFSFileSystem(event.getStream());
final DirectoryEntry dir = poifs.getRoot();
final DocumentEntry dsiEntry = (DocumentEntry)
dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);

final DocumentInputStream dis = new DocumentInputStream(dsiEntry);
final PropertySet props = new PropertySet(dis);
dis.close();
dsi = new DocumentSummaryInformation(props);
}
catch (Exception ex) {
throw new RuntimeException
("Cannot create POI SummaryInformation for event: " + event +
", path:" + event.getPath() +
", name:" + event.getPath() +
", cause:" + ex);
}

我在尝试使用 word 和 power point 文件(以及 OLE2)时遇到同样的错误。

我完全没有想法,所以非常感谢任何帮助/指点:)

最佳答案

如果将签名编号翻转过来,您将看到文件开头的字节:

0x000201060000FFFE -> 0xFE 0xFF 0x00 0x00 0x06 0x01 0x02 00

前两个字节看起来像一个 Unicode BOM,0xFEFF 表示 16 位小端。然后你有一些低控制字节,十六进制代码 0 然后 258 然后 2,所以它可能毕竟不是文本文件。

该文件确实不是 OLE2 文件,POI 给您的错误是正确的。我不知道它是什么,但我猜它可能是 OLE2 文件的一部分,但没有它的外部 OLE2 包装器?如果你能用office打开它,做一个另存为,POI应该可以打开它。目前,该 header 不是 OLE2 文件 header ,因此 POI 无法为您打开它。

关于java - header 签名无效;在 excel 文档上使用 Apache POI 的 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3677925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com