【问题标题】:Apache POI Replace String in WordApache POI 替换 Word 中的字符串
【发布时间】:2014-08-25 02:36:18
【问题描述】:

我最近一直在开发一个自动化系统来制作和打印要邮寄的信件。系统工作如下:

  • 我创建了一个包含所有信息的文件,并用 %... 占位符替换了一些内容。例如,%name、%date 等。
  • 当我运行应用程序时,我可以从列表中选择一个名称,它会自动加载文档,用 MySQL 数据库提供的信息替换所有占位符,然后打印出文档。出于测试目的,我现在只是保存文档。

我在互联网上找到了一些教程,并找到了适合我需要的代码。不幸的是,此代码仅适用于 2007 年以前的 Word 版本(.doc 文件)。对于 2007 年及以上的兼容性(.docx 文件),我会进行哪些更改?

public static void main(String[] args){
    try{
        FileInputStream fis = new FileInputStream("/Users/Jasper/Desktop/document.doc");
        POIFSFileSystem fs = new POIFSFileSystem(fis);

        HWPFDocument doc = new HWPFDocument(fs);

        Range range = doc.getRange();
        range.replaceText("%name", "Jasper");
        range.replaceText("%age", "17");

        FileOutputStream fos = new FileOutputStream("/Users/Jasper/Desktop/document2.doc");
        doc.write(fos);

        fis.close();
        fos.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}

【问题讨论】:

    标签: java replace ms-word apache-poi docx


    【解决方案1】:

    请看我的回答here我使用这个解决方案来自动生成文档,它已经在生产中使用了一年多。

    【讨论】:

    • @HaucemBerraana 这似乎是完成一项简单任务的极其复杂的方法......
    • 如果你问我,这不是一个很简单的任务。此代码完美运行。照原样使用它。如果你想做一些高级的事情,你甚至可以使用样式等
    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2016-08-18
    相关资源
    最近更新 更多