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();
    }
相关推荐
第九序言T2 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
龙亘川3 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人4 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
Raas1004 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
专注仿真5 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
jimy16 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++
呆呆虫126 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
心疼你的一切6 小时前
Python自动发邮件实战定时发报表
大数据·开发语言·python
Wang's Blog7 小时前
Java 项目实战:交友项目 - 用户体系集成总结
java·开发语言·交友
中科三方8 小时前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php