采用docx4j 替换word模板内容,并输出进行保存文件。
模板截图如下:
替换后截图如下:
模板制作过程中需要注意:
- 模板变量使用${}包含;
- 使用解压工具打开模板/word/document.xml文件。采用网上的xml格式化工具进行排版。进行整理。
代码如下:可在附件中下载。
import java.util.HashMap;
import org.docx4j.model.datastorage.migration.VariablePrepare;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
public class MyExampleReplaceText {
private static final String tale_templetate_docx = "\\myexamples\\replace_text_templetate.docx";
private static final String tale_output_docx = "\\myexamples\\replace_text__output.docx";
public static void main(String[] args) throws Exception {
//加载模板
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
.load(new java.io.File(System.getProperty("user.dir")+tale_templetate_docx));
//数据替换预处理,调用API包
VariablePrepare.prepare(wordMLPackage);
//准备数据
HashMap<String, String> mappings = new HashMap<String, String>();
mappings.put("username", "张三");
mappings.put("party_date", "2014年10月25日");
mappings.put("numberCount", "150");
mappings.put("pay_acount", "99.50");
mappings.put("now_date", "2014年09月25日");
//进行数据合并
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
documentPart.variableReplace(mappings);
//保存文件
String filename = System.getProperty("user.dir") + tale_output_docx;
wordMLPackage.save(new java.io.File(filename) );
}
}
注意 此处的 签名,最好是导入到模板 压缩 包里 ,指定图片位置 。
又更新 ,将表格替换也放到里面了