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

时间:2009-12-07 14:34:30

标签: java ms-word

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

有人可以建议吗?

5 个答案:

答案 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)

我建议使用Apache POI库:

http://poi.apache.org/

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

答案 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文档交互的内容。

http://poi.apache.org/

答案 4 :(得分:0)

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

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