我们需要一个Java库来替换MS Word文件中的字符串。
有人可以建议吗?
答案 0 :(得分:6)
虽然Apache POI中的是 MS Word支持,但它并不是很好。加载然后保存除最基本格式之外的任何文件可能会使布局变得混乱。你应该尝试一下,也许它适合你。
还有很多商业图书馆,但我不知道它们中是否有更好的。
在最近处理类似要求时我不得不解决的糟糕“解决方案”是使用DOCX格式,打开ZIP容器,读取文档XML,然后用正确的文本替换我的标记。这适用于替换没有段落等的简单文本位。
private static final String WORD_TEMPLATE_PATH = "word/word_template.docx";
private static final String DOCUMENT_XML = "word/document.xml";
/*....*/
final Resource templateFile = new ClassPathResource(WORD_TEMPLATE_PATH);
final ZipInputStream zipIn = new ZipInputStream(templateFile.getInputStream());
final ZipOutputStream zipOut = new ZipOutputStream(output);
ZipEntry inEntry;
while ((inEntry = zipIn.getNextEntry()) != null) {
final ZipEntry outEntry = new ZipEntry(inEntry.getName());
zipOut.putNextEntry(outEntry);
if (inEntry.getName().equals(DOCUMENT_XML)) {
final String contentIn = IOUtils.toString(zipIn, UTF_8);
final String outContent = this.processContent(new StringReader(contentIn));
IOUtils.write(outContent, zipOut, UTF_8);
} else {
IOUtils.copy(zipIn, zipOut);
}
zipOut.closeEntry();
}
zipIn.close();
zipOut.finish();
我并不以此为荣,但它确实有效。
答案 1 :(得分:2)
答案 2 :(得分:0)
试试这个:http://www.dancrintea.ro/doc-to-pdf/
除了替换ms中的字符串文字文件还可以: - 使用简化的API读取/写入Excel文件,如:getCell(x,y)和setCell(x,y,string) - 隐藏Excel工作表(例如辅助计算) - 替换DOC,ODT和SXW文件中的图像 - 并转换:
doc - > pdf,html,txt,rtf xls - > pdf,html,csv ppt - > pdf,swf
答案 3 :(得分:0)
我将看一下Apache POI项目。这是我过去用于与MS文档交互的内容。
答案 4 :(得分:0)
谢谢大家。我要试试http://www.dancrintea.ro/doc-to-pdf/
因为我需要转换经典DOC文件(二进制)而不是DOCX(zip格式)。