步骤:
第一步:准备好一份模板
如:
尊敬的客户:
您好,很高兴为您服务!
${applytime}您所反馈的${question}问题已处理完毕,共耗时${totletime}小时。
事件:${reason}
事件:${fixway}
非常感谢您的反馈,祝您生活愉快!
${nowtime}
处理类:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.poi.xwpf.usermodel.LineSpacingRule; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr; public class test { public static void main(String[] args) throws Exception { Map<String,String> para=new HashMap<String,String>(); para.put("${applytime}", "applytime"); para.put("${totletime}", "totletime"); para.put("${who}","who"); para.put("${question}", "question"); para.put("${reason}", "reason"); para.put("${fixway}", "fixway"); para.put("${nowtime}", new Date().toString()); loadandreplace("C:\\Users\\Administrator\\Desktop\\test.docx",para); } public static boolean loadandreplace(String srcpath,Map<String,String> parameter) throws Exception { String content=""; XWPFDocument doc=new XWPFDocument(new FileInputStream(new File(srcpath))); FileOutputStream outfile=new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\newtest.docx")); XWPFDocument newdoc=new XWPFDocument(); XWPFParagraph[] paragraphs=doc.getParagraphs(); for(XWPFParagraph temp:paragraphs) { //获取模板段落内容 content=temp.getText(); //创建导出文档的段落 XWPFParagraph newparagraph=newdoc.createParagraph(); //设置段落位置 newparagraph.setAlignment(temp.getAlignment()); //设置行距 newparagraph.setSpacingLineRule(LineSpacingRule.valueOf(2)); //模板段落样式 CTPPr p=temp.getCTP().getPPr(); //给导出文件模板赋值 newparagraph.getCTP().setPPr(p); //替换模板中的变量值 XWPFRun run=newparagraph.createRun(); for(String key:parameter.keySet()) { content=content.replace(key, parameter.get(key)); } //设置字体大小 run.setFontSize(11); run.setFontFamily("宋体"); run.setTextPosition(11); //写入新的段落中 run.setText(content); } newdoc.write(outfile); return true; } } |