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();
    }
相关推荐
寻寻觅觅☆10 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
l1t11 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
赶路人儿11 小时前
Jsoniter(java版本)使用介绍
java·开发语言
ceclar12312 小时前
C++使用format
开发语言·c++·算法
码说AI12 小时前
python快速绘制走势图对比曲线
开发语言·python
Gofarlic_OMS12 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
星空下的月光影子12 小时前
易语言开发从入门到精通:补充篇·网络爬虫与自动化采集分析系统深度实战·HTTP/HTTPS请求·HTML/JSON解析·反爬策略·电商价格监控·新闻资讯采集
开发语言
老约家的可汗12 小时前
初识C++
开发语言·c++
wait_luky13 小时前
python作业3
开发语言·python
消失的旧时光-194313 小时前
第十九课:为什么要引入消息队列?——异步系统设计思想
java·开发语言