我试图用Java中的Apache POI修改一个文档。
首先,测试.doc无法读取,并引发异常:
" org . Apache . poi . poifs . file system . notole 2 file exception:无效的标头签名;读取0x6576206C6D783F3C,预期的0xE11AB1A1E011CFD0 -您的文件似乎不是有效的OLE2文档"
所以我把文档保存为“word 97-03”格式,然后POI可以正确阅读文档。
但是,当我尝试将内容重写为没有任何更改的新文件时,MS Office无法打开文件输出.doc。
当我使用MS Office自己制作新文档时,POI运行良好,一切正常。
所以问题是“test.doc”。
test.doc是由某种程序生成的,我无法访问代码,所以我不知道出了什么问题。
我的问题是:
1.既然test.doc可以被MS Office读取,为什么POI不能不保存为新格式的文档?2.既然POI可以读取文档,为什么它不能写回一个新文件(MS Office打不开)?
这是我的代码:
FileInputStream fis = null;
try {
fis = new FileInputStream("test.doc");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
POIFSFileSystem pfs = null;
try {
pfs = new POIFSFileSystem(fis);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
HWPFDocument hwdf = null;
try {
hwdf = new HWPFDocument(pfs);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File("output.doc"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
hwdf.write(fos);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
}
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
pfs.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
十六进制的东西读作 ASCII,读小端转换成
Word有时会优雅地打开其他数据格式,保存后将以Word格式正确保存。
因此,您需要使用十六进制编辑器来查看
测试的内容.doc
如果它真的是某种损坏的格式,则需要找出它的来源以及如何修复该文件的创建。
问题内容: 尝试使用ApachePOI打开Excel时,我得到 我检查了。没有创建这样的文件夹。我正在使用Apache POI 3.6版。 有什么帮助吗?类似的代码在其他工作区中运行良好。在这里不知所措。 码: 问题答案: 您为什么要制作一个非常好的文件,将其包装在中,然后要求POI必须为您缓冲整个文件,以便可以进行随机访问?如果直接将文件直接传递给POI,生活会好很多,因此可以根据需要跳过它!
用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。
java在通过ftl模版填充数据,导出为word文档时,导出的xml格式,使用wps能打开,使用office打开就报错说无法打开文件。导出的doc格式,docx也不行 给ftl加上html标签,没得用,数据也是没得问题。
我已经编写了用于编写xlsm(Excel2007)的java文件。 使用ApachePOI库,编写xlsx文件是成功的。编写xlsm文件是成功的。但我无法打开xlsm文件,因为打开xlsm文件时出错。 使用ApachePOI库编写xlsm文件可行吗? 如果可以编写xlsm,请提供如何使用ApachePOI库编写xlsm文件的指南。 谢谢
http://poi.apache.org先生明确指出: Office OpenXML Format是Microsoft Office 2007和2008中使用的基于新标准的XML文件格式。这包括XLSX、DOCX和PPTX。该项目提供了一个低级API来支持使用OpenXML4J的开放打包约定。 然后我进入POI的api,发现HPSF有PropertySet,它是访问我想要的元数据的实际类,但XS
在这里,我试图阅读excel文件,并想编辑它,如果需要的话。