使用Java:在MS Word文件中替换字符串

我们需要一个Java库来替换MS Word文件中的字符串。

谁有人建议?

虽然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(); 

我并不以此为荣,但它确实有效。

我会建议Apache POI库:

http://poi.apache.org/

看起来更多 – 看起来它没有保持最新 – 嘘! 现在可能已经足够完成你所需要的了。

试试这个: 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

我将看一下Apache POI项目。 这是我过去用于与MS文档交互的内容。

http://poi.apache.org/

谢谢大家。 我要试试http://www.dancrintea.ro/doc-to-pdf/

因为我需要转换经典DOC文件(二进制)而不是DOCX(zip格式)。