工作总结之----使用freemarker导出word文档(导出的只是文本)

controller控制层代码:

    /**
     * 导出方法
     * @return
     */
    @RequestMapping(value = "/export")
    public void export( HttpServletRequest request, HttpServletResponse response) throws Exception {
        //获取导出信息
        String ceccAdministrativeWeeklyInfoId = request.getParameter("ceccAdministrativeWeeklyInfoId");
        CeccAdministrativeWeeklyInfo ceccAdministrativeWeeklyInfo = ceccAdministrativeWeeklyInfoService.mySelectById(ceccAdministrativeWeeklyInfoId);
        List<Map<String, String>> list0 = ceccAdministrativeWeeklyInfoService.
                myEditPage0(ceccAdministrativeWeeklyInfoId);
        List<Map<String, String>> list1 = ceccAdministrativeWeeklyInfoService.
                myEditPage1(ceccAdministrativeWeeklyInfoId);
        List<Map<String, String>> list2 = ceccAdministrativeWeeklyInfoService.
                myEditPage2(ceccAdministrativeWeeklyInfoId);
        //将导出信息存入dataMap中,其中key为模板中的变量,value为对应要导出的值
        Map<String,Object> dataMap = new HashMap<String,Object>();
        dataMap.put("weeklyPeriods",ceccAdministrativeWeeklyInfo.getWeeklyperiods());
        dataMap.put("startDate",DateUtil.getDateFormat(ceccAdministrativeWeeklyInfo.getStartdate(),"yyyy年MM月dd日"));
        dataMap.put("endDate",DateUtil.getDateFormat(ceccAdministrativeWeeklyInfo.getEnddate(),"yyyy年MM月dd日"));
        if(list0!=null && list0.size()>0){
            List contentInfoCurrent = new ArrayList();
            for(int i=0; i<list0.size(); i++){
                String contentinfo = list0.get(i).get("contentinfo");
                if(contentinfo!=null && !"".equals(contentinfo)){
                    contentInfoCurrent.add(contentinfo);
                }
            }
            dataMap.put("contentInfoCurrent",contentInfoCurrent);
        }
        if(list1!=null && list1.size()>0){
            List contentInfoNext = new ArrayList();
            for(int i=0; i<list1.size(); i++){
                String contentinfo = list1.get(i).get("contentinfo");
                if(contentinfo!=null && !"".equals(contentinfo)){
                    contentInfoNext.add(contentinfo);
                }
            }
            dataMap.put("contentInfoNext",contentInfoNext);
        }if(list2!=null && list2.size()>0){
            List contentInfoPoint = new ArrayList();
            for(int i=0; i<list2.size(); i++){
                String contentinfo = list2.get(i).get("contentinfo");
                if(contentinfo!=null && !"".equals(contentinfo)){
                    contentInfoPoint.add(contentinfo);
                }
            }
            dataMap.put("contentInfoPoint",contentInfoPoint);
        }
        //导出模板所在文件夹路径
        String templatePath = request.getRealPath("/static/template");
        response.reset();
        response.setHeader("Content-disposition", "attachment; filename=" +
                java.net.URLEncoder.encode("导出word文件名称.doc", "UTF-8"));
        response.setContentType("application/msword");
        ServletOutputStream out = response.getOutputStream();
        Writer writer = new OutputStreamWriter(out, "UTF-8");
        //zxgsgzzb.ftl---模板名称,将信息导出为word文件
        ExportTemplate.write(templatePath, "zxgsgzzb.ftl", dataMap, writer);
    }
}

 导出工具类方法:

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

import java.io.File;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;

public class ExportTemplate {

    private static Configuration configuration;
    static{
        configuration = new Configuration();
        configuration.setDefaultEncoding("UTF-8");
    }
    /**
     * @param templatePath
     * @param templateName
     * @return
     * @throws IOException
     * 获取模版
     */
    private static Template getTemplate(String templatePath, String templateName) throws IOException{
        File file = new File(templatePath);
        configuration.setDirectoryForTemplateLoading(file);
        Template t = configuration.getTemplate(templateName);
        t.setEncoding("UTF-8");
        return t;
    }

    /**
     * @param templatePath
     * @param templateName
     * @param dataMap
     * @param out
     * 写入模版
     */
    public static void write(String templatePath, String templateName, Map<String, Object> dataMap, Writer out){
        try {
            Template t = getTemplate(templatePath, templateName);
            t.process(dataMap, out);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 生成模板参考https://blog.csdn.net/lun379292733/article/details/18673081

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值