java-数据导出到word文件

java-数据导出到word文件,第1张

java-数据导出到word文件

参考网址:(10条消息) Java导出Word文档的实现_plxddyxnmd的博客-CSDN博客_java导出word

模板

导出后:

处理模板

  1. Word模板中选中要替换的文本,使用 Ctrl + F9 组合键将其设置为域,此时文本会被"{}"包围,接着鼠标右键选择【编辑域(E)...】
  2. 在d出的对话框中,类别选择“邮件合并”,域名选择 "MergeField",域属性中的域名填入模版表达式${sendUserName}

pom文件:

        
        
            org.apache.poi
            poi
            4.1.1
        
        
            org.apache.poi
            poi-ooxml
            4.1.1
        
        
            org.jxls
            jxls
            2.6.0
            
                
                    ch.qos.logback
                    logback-core
                
            
        
        
            org.jxls
            jxls-poi
            1.2.0
        
        
            fr.opensagres.xdocreport
            fr.opensagres.xdocreport.core
            2.0.2
        
        
            fr.opensagres.xdocreport
            fr.opensagres.xdocreport.document
            2.0.2
        
        
            fr.opensagres.xdocreport
            fr.opensagres.xdocreport.template
            2.0.2
        
        
            fr.opensagres.xdocreport
            fr.opensagres.xdocreport.document.docx
            2.0.2
        
        
            fr.opensagres.xdocreport
            fr.opensagres.xdocreport.template.freemarker
            2.0.2
        
        
            org.freemarker
            freemarker
            2.3.30
        
        
            commons-io
            commons-io
            2.5
        



        
            
                org.apache.maven.plugins
                maven-resources-plugin
                3.1.0
                
                    UTF-8
                    
                        
                        xlsx
                        xls
                        docx
                    
                
            

 实现层:

public ResultDto approveWordTest(HttpServletResponse response, ReimbursementFormDTO formDTO) {
        Map paramsMap = (Map) formDTO.getParamsMap();

        Map baseInfo = (Map) paramsMap.get("baseInfo");
        List> formList = (List>) paramsMap.get("form");

        ResultDto resultDto = new ResultDto();

        try {
            InputStream ins = this.getClass().getClassLoader().getResourceAsStream("templates/wordTest.docx");
            //注册xdocreport实例并加载FreeMarker模板引擎
            IXDocReport report = XDocReportRegistry.getRegistry().loadReport(ins, TemplateEngineKind.Freemarker);
            //创建xdocreport上下文对象
            IContext context = report.createContext();


            context.put("sendUserName", "张三");
            context.put("commission", "否");
            context.put("date", "2021/11/24");
            context.put("payUserName", "李四");
            context.put("bankName", "工商银行");
            context.put("account", "123456789");


            List formTest = new ArrayList<>();
            WordTest word1 = new WordTest();
            word1.setCost1(999.0);
            word1.setCost2(888.0);
            word1.setCost3(777.0);
            word1.setRemark("说明一下");

            WordTest word2 = new WordTest();
            word2.setCost1(666.0);
            word2.setCost2(555.0);
            word2.setCost3(444.0);
            word2.setRemark("说明两下");

            formTest.add(word1);
            formTest.add(word2);

            context.put("form", formTest);

            //创建字段元数据
            Fieldsmetadata fm = report.createFieldsmetadata();
            //Word模板中的表格数据对应的集合类型
            fm.load("form", WordTest.class, true);

            //浏览器端下载
            response.setCharacterEncoding("utf-8");
            response.setContentType("application/msword");
            String fileName = "wordTest.docx";
            response.setHeader("Content-Disposition", "attachment;filename="
                    .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
            report.process(context, response.getOutputStream());

            resultDto.setCode("200");
            resultDto.setMessage("导出成功");
        } catch (Exception e) {
            resultDto.setCode("400");
            resultDto.setMessage("导出失败");
            e.printStackTrace();
        }

        return resultDto;
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5582782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存