学习目标:
使用FreeMarker给word文档里生成柱状图
1制作ftl文件:
1.先创建个空白的word文档 然后插入柱状图
2.另存为xml文件 打开后是这样
3.百度搜索 XML 在线格式化 转化格式为这样
4.把这些内容粘贴到文本里格式改为ftl 像这样
生成word:
自己到百度搜个生成word文档的方法
wordutil
/** * 生成word文件 * @param dataMap word中需要展示的动态数据,用map集合来保存 * @param templateName word模板名称,例如:test.ftl * @param filePath 文件生成的目标路径,例如:D:/wordFile/ * @param fileName 生成的文件名称,例如:test.doc */ @SuppressWarnings("unchecked") public static void createWord(Map dataMap,String templateName,String filePath,String fileName){ Writer out = null; try { //创建配置实例 Configuration configuration = new Configuration(); //设置编码 configuration.setDefaultEncoding("UTF-8"); //ftl模板文件 configuration.setClassForTemplateLoading(WordUtil.class,"/"); //获取模板 Template template = configuration.getTemplate(templateName); //输出文件 File outFile = new File(filePath+File.separator+fileName); //如果输出目标文件夹不存在,则创建 if (!outFile.getParentFile().exists()){ outFile.getParentFile().mkdirs(); } //将模板和数据模型合并生成文件 out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8")); //生成文件 template.process(dataMap, out); } catch (Exception e) { e.printStackTrace(); }finally{ if(out != null){ try { //关闭流 out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } } }
main方法里里生成出来
// 生成word WordUtil.createWord(dataMap, "freeMark/testReportNew7.ftl", filePath, fileName);
展示word:
最后就成这个了
当然 这些数据是静态的!如果需要动态的需要给ftl文件里加pkg标签