下载资源后端资源详情
word-export-demo-master.zip
大小:29.45KB
价格:45积分
下载量:0
评分:
5.0
上传者:weixin_42001592
更新日期:2025-09-22

Java基于模板导出Word文档Demo

资源文件列表(大概)

文件名
大小
word-export-demo-master/
-
word-export-demo-master/.gitignore
490B
word-export-demo-master/.idea/
-
word-export-demo-master/.idea/.gitignore
176B
word-export-demo-master/.idea/encodings.xml
345B
word-export-demo-master/.idea/git_toolbox_blame.xml
171B
word-export-demo-master/.idea/misc.xml
528B
word-export-demo-master/.idea/vcs.xml
180B
word-export-demo-master/pom.xml
1.9KB
word-export-demo-master/src/
-
word-export-demo-master/src/main/
-
word-export-demo-master/src/main/java/
-
word-export-demo-master/src/main/java/com/
-
word-export-demo-master/src/main/java/com/demo/
-
word-export-demo-master/src/main/java/com/demo/wordex/
-
word-export-demo-master/src/main/java/com/demo/wordex/WordExportDemoApplication.java
395B
word-export-demo-master/src/main/java/com/demo/wordex/controller/
-
word-export-demo-master/src/main/java/com/demo/wordex/controller/TestController.java
5.48KB
word-export-demo-master/src/main/java/com/demo/wordex/model/
-
word-export-demo-master/src/main/java/com/demo/wordex/model/UserInfo.java
366B
word-export-demo-master/src/main/java/com/demo/wordex/utils/
-
word-export-demo-master/src/main/java/com/demo/wordex/utils/WordUtil.java
2.79KB
word-export-demo-master/src/main/resources/
-
word-export-demo-master/src/main/resources/application.yml
20B
word-export-demo-master/src/main/resources/templates/
-
word-export-demo-master/src/main/resources/templates/dynamic_userlist.xml
89.8KB
word-export-demo-master/src/main/resources/templates/generate_word_test.xml
109.48KB

资源内容介绍

SpringBoot 项目,Java 基于模板导出 Word 文档 Demo 示例,使用 Freemarker 模板引擎实现,提取了 WordUtil 工具类。
package com.demo.wordex.controller;import com.demo.wordex.model.UserInfo;import com.demo.wordex.utils.WordUtil;import freemarker.cache.ClassTemplateLoader;import freemarker.template.Configuration;import freemarker.template.Template;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;import javax.servlet.http.HttpServletResponse;import java.io.BufferedWriter;import java.io.OutputStreamWriter;import java.io.Writer;import java.net.URLEncoder;import java.nio.charset.StandardCharsets;import java.time.LocalDate;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author 秋牧 * 2024/7/22 16:49 */@Slf4j@RestController@RequestMapping("/test")public class TestController { @Resource private WordUtil wordUtil; /** * 基于模板生成 Word 文档 * * @param response response */ @GetMapping("/generate_word") public void generateWord(HttpServletResponse response) { Map<String, String> templateParam = new HashMap<>(5); templateParam.put("name", "小明"); templateParam.put("sex", "男"); templateParam.put("age", "18"); templateParam.put("birthday", "2024-07-22"); templateParam.put("cardNum", "440000000000001111"); try { // 设置 HTTP 响应的内容类型为 Microsoft Word 文档 response.setContentType("application/msword"); // 设置响应字符编码为 UTF-8 response.setCharacterEncoding("utf-8"); // 使用 URLEncoder 对文件名进行编码,以防止中文文件名在不同浏览器和操作系统下出现乱码问题 String filename = URLEncoder.encode("测试Word_" + System.currentTimeMillis(), "utf-8"); // 设置响应头,指定文档将以附件的形式下载,并定义文件名 response.setHeader("Content-disposition", "attachment;filename=" + filename + ".doc"); // 创建 Freemarker 的 Configuration 对象,设置默认的不兼容改进选项 Configuration configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS); configuration.setDefaultEncoding("utf-8"); // 设置模板加载器,加载模板文件 configuration.setTemplateLoader(new ClassTemplateLoader(getClass(), "/templates")); Template t = configuration.getTemplate("generate_word_test.xml", "utf-8"); // 创建 Writer 对象,用于将生成的文档写到输出流中,缓存区大小设为 10KB Writer out = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), StandardCharsets.UTF_8), 10240); // 将模型数据与模板结合生成 Word 文档,写入到 Writer 对象中 t.process(templateParam, out); out.close(); } catch (Exception e) { log.info("生成Word文档异常,异常原因:{}", e.getMessage(), e); throw new RuntimeException("生成Word文档异常,异常原因:" + e.getMessage()); } } /** * 基于模板生成 Word 文档(基于示例 1 提取 Word 工具类) * * @param response response */ @GetMapping("/generate_word_2") public void generateWord2(HttpServletResponse response) { Map<String, String> templateParam = new HashMap<>(5); templateParam.put("name", "小明"); templateParam.put("sex", "男"); templateParam.put("age", "18"); templateParam.put("birthday", "2024-07-22"); templateParam.put("cardNum", "440000000000001111"); wordUtil.generate(response, "/templates", "generate_word_test.xml", templateParam, "测试Word"); } /** * 基于模板生成 Word 文档(使用对象入参) * * @param response response */ @GetMapping("/generate_word_3") public void generateWord3(HttpServletResponse response) { UserInfo userInfo = new UserInfo(); userInfo.setName("小明"); userInfo.setSex("男"); userInfo.setAge("18"); userInfo.setBirthday("2024-07-22"); userInfo.setCardNum("440000000000001111"); wordUtil.generate(response, "/templates", "generate_word_test.xml", userInfo, "测试Word"); } /** * 基于模板生成 Word 文档(生成动态列表) * * @param response response */ @GetMapping("/generate_dynamic_word") public void generateDynamicWord(HttpServletResponse response) { List<UserInfo> userList = new ArrayList<>(); userList.add(new UserInfo("小明", "男", "18", "2024-07-22", "440000000000001111")); userList.add(new UserInfo("小红", "女", "20", "2024-07-26", "440000000000002222")); userList.add(new UserInfo("小白", "男", "17", "2024-07-24", "440000000000003333")); userList.add(new UserInfo("小蓝", "女", "19", "2024-07-23", "440000000000004444")); userList.add(new UserInfo("小黑", "男", "18", "2024-07-21", "440000000000005555")); Map<String, Object> templateParam = new HashMap<>(5); templateParam.put("date", LocalDate.now()); templateParam.put("total", userList.size()); templateParam.put("userList", userList); wordUtil.generate(response, "/templates", "dynamic_userlist.xml", templateParam, "测试动态列表Word"); }}

用户评论 (0)

发表评论

captcha