Sim*_*eon 13 java apache excel apache-poi
我越来越:
java.io.IOException:标头签名无效; 读取0x000201060000FFFE,预期为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);
}
Run Code Online (Sandbox Code Playgroud)
尝试使用word和power point文件(也是OLE2)时出现同样的错误.
我完全没有想法所以任何帮助/指针都非常感谢:)
如果您将签名号翻转,您将看到文件开头的字节:
0x000201060000FFFE - > 0xFE 0xFF 0x00 0x00 0x06 0x01 0x02 00
前两个字节看起来像Unicode BOM,0xFEFF表示16位小端.然后你有一些低控制字节,十六进制代码为0然后258然后是2,所以也许它毕竟不是一个文本文件.
该文件确实不是OLE2文件,POI是正确的给你错误.我不知道它是什么,但我猜它也许它可能是OLE2文件的一部分没有它的外部OLE2包装?如果您可以在办公室打开它,请执行save-as和POI应该可以打开它.就目前而言,该标题不是OLE2文件标题,因此POI无法为您打开它.
| 归档时间: |
|
| 查看次数: |
47608 次 |
| 最近记录: |