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();
    }
相关推荐
jerryinwuhan2 小时前
基于各城市站点流量的复合功能比较
开发语言·php
迈巴赫车主2 小时前
Java基础:list、set、map一遍过
java·开发语言
南 阳3 小时前
Python从入门到精通day66
开发语言·python
十八旬4 小时前
快速安装ClaudeCode完整指南
开发语言·windows·python·claude
前进的李工5 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain
Byron Loong5 小时前
【c++】为什么有了dll和.h,还需要包含lib
java·开发语言·c++
独隅6 小时前
CodeX + Visual Studio Code 联动的全面指南
开发语言·php
坚果派·白晓明6 小时前
【鸿蒙PC三方库移植适配框架解读系列】第一篇:Lycium C/C++ 三方库适配 — 概述与环境配置
c语言·开发语言·c++·harmonyos·开源鸿蒙·三方库·c/c++三方库
爱吃小白兔的猫6 小时前
LPA算法详解:一种近线性时间的图社区发现方法
开发语言·php