【发布时间】:2018-06-20 13:24:57
【问题描述】:
我想使用 apache poi 保护带有密码的 .doc 文件。运行代码时出现此错误。请帮帮我
线程“main”中的异常 org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: 提供的数据似乎是 OLE2 格式。你打电话给 处理 OOXML(Office Open XML)文档的 POI 的一部分。你 需要调用 POI 的不同部分来处理这些数据(例如 HSSF 而不是 XSSF) 在 org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:179) 在 org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipFile(ZipHelper.java:237) 在 org.apache.poi.openxml4j.opc.ZipPackage.(ZipPackage.java:134) 在 org.apache.poi.openxml4j.opc.ZipPackage.(ZipPackage.java:117) 在 org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:257)
POIFSFileSystem fs=new POIFSFileSystem();
EncryptionInfo info=new EncryptionInfo(EncryptionMode.agile);
Encryptor enc=info.getEncryptor();
enc.confirmPassword("user");
OPCPackage opc=OPCPackage.open("D:/Amar.doc", PackageAccess.READ_WRITE);
OutputStream os=enc.getDataStream(fs);
opc.save(os);
opc.close();
FileOutputStream stream=new FileOutputStream("D:/ao.doc");
fs.writeFilesystem(stream);
stream.close();
System.out.println("running");
【问题讨论】:
-
错误显示在 OPCPackage opc=OPCPackage.open("D:/Amar.doc",PackageAccess.READ_WRITE);
-
您似乎从docs 复制了代码。如果您仔细阅读,那么您也会看到它在
XML-based formats - Encryption部分中。对于.doc文件,请阅读binary formats 部分 -
但此代码适用于 .docx 格式
-
是的,阅读我给你的链接......它的全部在那里解释......
-
好的,谢谢......你能不能给我完整的代码来保护文档
标签: java apache-poi