栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java-数据导出到word文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java-数据导出到word文件

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

模板:

导出后:

处理模板:

  1. Word模板中选中要替换的文本,使用 Ctrl + F9 组合键将其设置为域,此时文本会被"{}"包围,接着鼠标右键选择【编辑域(E)...】
  2. 在弹出的对话框中,类别选择“邮件合并”,域名选择 "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;
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591591.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号