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();
    }
相关推荐
vastsmile15 分钟前
(R)26.04.23 hermes agent执行本地命令超级慢的原因
开发语言·elasticsearch·r语言
我头发多我先学41 分钟前
C++ 模板全解:从泛型编程初阶到特化、分离编译进阶
java·开发语言·c++
YSF2017_31 小时前
C语言16-makefile(3)——makefile的模式规则
linux·c语言·开发语言
星星码️1 小时前
C++选择题练习(一)
开发语言·c++
herinspace2 小时前
管家婆实用贴-如何分离和附加数据库
开发语言·前端·javascript·数据库·语音识别
ILYT NCTR2 小时前
搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程
开发语言·后端·golang
小雅痞2 小时前
[Java][Leetcode simple] 28. 找出字符串中第一个匹配项的下标
java·开发语言·leetcode
likerhood2 小时前
java中的不可变类(Immutable)
java·开发语言
Ulyanov2 小时前
《PySide6 GUI开发指南:QML核心与实践》 第一篇:GUI新纪元——QML与PySide6生态系统全景
开发语言·python·qt·qml·雷达电子对抗
Rust研习社3 小时前
从入门到实践:Rust 异步编程完全指南
开发语言·后端·rust