数据库数据导入word文档

第一步:打开word,设计表格,另存为另一种格式的word也就是.xml的格式

数据库数据导入word文档_第1张图片

 数据库数据导入word文档_第2张图片

第二步:把文档需要更改的数据替换成${字段名} 并且把修改后的文档修改后缀名.ftl,放入到eclipse的根目录下建一个文件夹

(事先填好假数据,是为了能够在xml中快速找到位置,然后修改成${字段名}的形式, .ftl是freemaker的后缀名,就是一种模板)

数据库数据导入word文档_第3张图片

数据库数据导入word文档_第4张图片

第三步:就是代码的体现了

@RequestMapping("exportToWord")
    public void exportToWord(HttpServletRequest request, HttpServletResponse response) {
        try {
            Template template = FreeMarkerUtils.getTemplate(request.getSession().getServletContext(), "/cons_org_design_scheme.ftl");
            Map root = new HashMap();
            root.put("name", "xxxxxxxxxxxxxxxxxxxxxxx");
            root.put("date", "2018-08-21");

            response.setContentType("application/x-msdownload");
            final HttpServletResponse responseTemp = response;
            responseTemp.addHeader("Content-Disposition", "attachment;filename=" + new String("实施性施工组织方案审核表.doc".getBytes(), "ISO-8859-1"));
            Writer out = new OutputStreamWriter(response.getOutputStream(), "UTF-8");
            template.process(root, out);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        }
    }

 

//工具类

package com.longshine.framework.crcc.utils;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;

import javax.servlet.ServletContext;
import java.io.IOException;

/**
 * Created by cheng on 2018/8/21.
 */
public class FreeMarkerUtils {
    private static Configuration cfg;

    public static Template getTemplate(ServletContext servletContext,String templateName){
        Template template = null;
        if (cfg == null) {
            cfg = new Configuration();
            cfg.setDefaultEncoding("UTF-8");
            cfg.setServletContextForTemplateLoading(servletContext, "/export_template");
            cfg.setObjectWrapper(new DefaultObjectWrapper());
        }
        try {
            template = cfg.getTemplate(templateName);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return template;
    }
}

效果就是第一步中的效果了

注明:如果word里面导入图片,需要得到图片的base64格式,在扔到模板里面,附上代码转化代码如下

               String imgageFile = "图片路径"

                InputStream inputStream = null;
                byte[] data = null;
                try {
                    inputStream = new FileInputStream(imgageFile);
                    data = new byte[inputStream.available()];
                    inputStream.read(data);
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // 加密
                 BASE64Encoder encoder = new BASE64Encoder();
                 String image = encoder.encode(data);

把image扔到map里传到模板里面.

再次注明这样代码生成的 base64不带,听好是不带  data:image/jpeg;base64,但是对本身程序没有影响,但是如果你想网上在线观看这个base64的图片,就加上前面这个东西 附上截图

数据库数据导入word文档_第5张图片

你可能感兴趣的:(2018.8)