使用FreeMarker给word文档里生成柱状图

学习目标:

使用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标签