开发者

使用EasyPoi快速导出Word文档功能的实现步骤

目录
  • 一、准备工作
    • 1、引入依赖
  • 二、准备好一个word模版文件
    • 三、编写导出方法的工具类
      • 四、在ExportWordServiceImpl层调用导出word工具方法
        • 五、前端请求接口后word文档的展示效果
          • 六、总结

            一、准备工作

            1、引入依赖

            在 Maven 项目中,添加以下依赖:

            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easy-poi-base</artifactId>
                <version>4.4.0</version>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easy-poi-annotation</artifactId>
                <version>4.4.0</version>
            </dependency>
            

            二、准备好一个word模版文件

            1. 在项目的 resources 目录下创建一个 template/exportTemplate.docx 文件作为模板。
            2. 使用 EasyPoi 提供的占位符 {{}} 来定义动态内容的位置。例如:
            {{title}}
            {{content}}
            

            三、编写导出方法的工具类

            package com.example.simple.util;
            
            
            import cn.afterturn.easypoi.cache.manager.POICacheManager;
            import cn.afterturn.easypoi.word.WordExportUtil;
            import cn.afterturn.easypoi.word.entity.MyXwpFDocument;
            import jakarta.servlet.ServletOutputStream;
            import jakarta.servlet.http.HttpServletResponse;
            import lombok.extern.slf4j.Slf4j;
            
            import Java.io.*;
            import java.util.Map;
            
            @Slf4j
            public class ExportWordUtil {
            
                /**
                 * 通用Word文档导出方法
                 * @param templateName 模板文件名
                 * @param params 模板参数
                 * @param response HTTP响应对象
                 * @param outputFileName 输出文件名
                 * @throws RuntimeException 导出过程中的异常
                 */
                public static void exportWordDocument(String templateName, Map<String, Object> params,
                                                      HttpServletResponse response, String outputFileName) {
                    MyXWPFDocument doc = null;
                    try {
                        // 获取模板文档
                        doc = getXWPFDocument(templateName);
                        if (doc == null) {
                            throw new RuntimeException("未能找到模板文件");
                        }
            
                        // 使用模板引擎替换内容
                        WordExportUtil.exportWord07(doc, params);
            
                        // 设置响应头
                        response.setContentType("application/vnd.openXMLformats-officedocument.wordprocessingml.document");
                        response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);
            
                        www.devze.com// 输出文档
                        try (ServletOutputStream outputStream = response.getOutputStream()) {
                            doc.write(outputStream);
                            outputStream.flush();
                        }
                    } catch (Exception e) {
                        log.error("导出Word文档失败", e);
                        throw new RuntimeException("导出Word文档失败: " + e.getMessage());
                    } finally {
                        // 关闭文档
                        if (doc != null) {
                            try {
                                doc.close();
                            } catch (Exception e) {
                                log.error("关闭文档失败", e);
                            }
                        }
                    }
                }
            
            
                public static MyXWPFDocument getXWPFDocument(String templateName) throws IOException {
                    // 从classpath获取模板
                    InputStream is = null;
                    try {
                        is = POICacheManager.getFile(templateName);
                        if (is == null) {
                            throw new FileNotFoundException("模板文件不存在: " + templateName);
                        }
                        return new MyXWPFDocument(is);
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    } finally {
                        if (is != null) {
                  www.devze.com          try {
                                is.close();
                            } catch (IOException e) {
                                log.error("关闭输入流失败", e);
                            }
                        }
                    }
                }
            }
            

            四、在ExportWordServiceImpl层调用导出word工具方法

            注意:在spring-boot3中使用时response引入的是import jakarta.servlet.http.HttpServletResponse;

            @Override
                public void exportWord(Map<String, Object> map, HttpServletResponse response) {
                    Map<String, Object> params = new HashMap<String, Object>();
                    params.put("title", "我是一个好标题");
                    params.put("content", "我是一个很有深度的内容");
                  编程客栈  ExportWordUt编程客栈il.exportWordDocument("template/exportTemplate.docx", params, response, "export.docx");
                }
            

            五、前端请求接口后word文档的展示效果

            使用EasyPoi快速导出Word文档功能的实现步骤

            六、总结

            通过 EasyPoi,我们可以轻松实现 Word 文档的导出功能。希望本文能帮助你快速上手并完成相关开发任务!

            到此这篇关于使用EasyPoi快速导出Word文档功能的实现步骤的文章就介绍到这www.devze.com了,更多相关EasyPoi导出Word文档内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

            0

            上一篇:

            下一篇:

            精彩评论

            暂无评论...
            验证码 换一张
            取 消

            最新开发

            开发排行榜