esay POI 固定导出word模板

pom.xml

JAVA 复制代码
 <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.1.0</version>
        </dependency>

word文档模板

代码

java 复制代码
 /**
     * 导出技术成果校审单Word文档
     */
    /**
     * 导出技术成果校审单Word文档 - 简化版
     */
    public void exportWord(ReviewFormDTO formData, HttpServletResponse response) throws Exception {
        // 1. 获取模板文档
        File rootFile = new File(ResourceUtils.getURL("classpath:").getPath());
        File templateFile = new File(rootFile, "/static/review_template.docx");
        Map<String, Object> contentMap = new HashMap<>();

        List<Map<String , Object>> tableDataList = new ArrayList<>();
        for (int i = 0; i <10; i++) {
            Map<String , Object> rowMap  = new HashMap<>();
            rowMap.put("id", i+1);
            rowMap.put("comment","评论ddddd" + i);
            rowMap.put("corrector" ,"改正" +i);
            rowMap.put("passed ","通过");
            tableDataList.add(rowMap);
        }
        contentMap.put("reviewList", tableDataList);
        //

        // 5. 使用模板导出Word
        XWPFDocument word = WordExportUtil.exportWord07(templateFile.getPath(),contentMap );

        // 6. 设置文件名和响应头
        String fileName = "技术成果校审单_" +
                (formData.getProjectName() != null && !formData.getProjectName().isEmpty() ?
                        formData.getProjectName() : "未命名") + ".docx";

        // 两种编码方式,选择一种
        // 方式1:使用URLEncoder(推荐)
        fileName = URLEncoder.encode(fileName, "UTF-8");
        response.setHeader("content-disposition", "attachment;filename=" + fileName);

        // 方式2:使用ISO8859-1编码(兼容性更好)
        // response.setHeader("content-disposition", "attachment;filename=" +
        //         new String(fileName.getBytes("UTF-8"), "ISO8859-1"));

        response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.sheet");

        // 7. 输出到响应流
        OutputStream out = response.getOutputStream();
        word.write(out);
        out.flush();
        out.close();
    }
相关推荐
LDR00612 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术12 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园12 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob12 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享12 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.12 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..12 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽12 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下12 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗11112 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言