好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

用 Freemarker 生成 word 文档.doc

6页
  • 卖家[上传人]:s9****2
  • 文档编号:532763267
  • 上传时间:2022-10-17
  • 文档格式:DOC
  • 文档大小:52KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 用 Freemarker 生成 word 文档1.       用word写一个需要导出的word模板,然后存为xml格式2.       将xml中需要动态修改内容的地方,换成freemarker的标识符,例如:  ${year} 年度工作报告 3.       用代码生成: import freemarker.template.Configuration; import freemarker.template.Template; import java.io.*; import java.util.HashMap; import java.util.Map; /** * @Class name: CreateDoc *

      * Short description on the purpose of the program. * @author : youfeng * @modified : 8/29/11 */ public class CreateDoc { private Configuration configuration = null; public CreateDoc() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } public void create() throws Exception { Map map = new HashMap(); map.put("date", "2011"); map.put("modifyDate", "2011/8/29"); map.put("modifyUser", "Zhu You Feng"); configuration.setClassForTemplateLoading(this.getClass(), "/docTemplate/"); Template t = configuration.getTemplate("doc1.ftl"); File outFile = new File("D:/outFile.doc"); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); t.process(map, out); } public static void main(String[] args) throws Exception { new CreateDoc().create(); } } 添加图片如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码:1 iVBORw0…(很省略很省略)…CC只要将base64的代码替换成例如:${image},如下:1 ${image}这里要注意“>${image}<”这尖括号中间不能加任何其他的诸如空格,tab,换行等符号。

      然后用代码生成: import freemarker.template.Configuration; import freemarker.template.Template; import sun.misc.BASE64Encoder; import java.io.*; import java.util.HashMap; import java.util.Map; /** * @Class name: CreateDoc * @author: youfeng * @modified: 8/29/11 */ public class CreateDocWithImage { private Configuration configuration = null; public CreateDocWithImage() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } public void create() throws Exception { Map map = new HashMap(); map.put("year", "2011"); map.put("person", "Zhu You Feng"); map.put("image", getImageStr()); configuration.setClassForTemplateLoading(this.getClass(), "/docTemplate/"); Template t = configuration.getTemplate("doc2.ftl"); File outFile = new File("D:/outFile.doc"); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); t.process(map, out); } private String getImageStr() { String imgFile = "d:/test.jpg"; InputStream in = null; byte[] data = null; try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(data); } public static void main(String[] args) throws Exception { new CreateDocWithImage().create(); } } 自定义载入模板   import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import sun.misc.BASE64Encoder; import java.io.*; import java.util.HashMap; import java.util.Map; public class DocumentGenerator { private Configuration configuration = null; public static void main(String[] args) throws Exception { Map map = new HashMap(); map.put("date", "2012"); map.put("modifyDate", "2011/8/29"); map.put("modifyUser", "Zhu You Feng"); new DocumentGenerator().createDoc("", "D:/outFile2.doc", map); } public DocumentGenerator() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); configuration.setClassicCompatible(true); configuration.setTemplateLoader(new ByteArrayStreamTemplateLoader(new ByteArrayInputStream( getBytesFromFile(new File("D:/ownProject/freemarkerToDoc/src/main/resources/docTemp。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.