当前位置: 首页 > article >正文

java 实现对 word 文档中占位符进行替换

pom.xml

        <!-- Poi-tl Word 模板引擎-->
        <dependency>
            <groupId>com.deepoove</groupId>
            <artifactId>poi-tl</artifactId>
            <version>1.9.1</version>
        </dependency>

自己写一个word基础模版 然后需要替换的值用占位符{{name}}代替

代码

package com.xgl.springboot.controller;

import com.deepoove.poi.XWPFTemplate;
import com.xgl.springboot.config.AppConfigManager;
import org.springframework.http.ResponseEntity;
import org.springframework.util.Base64Utils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

@RestController
public class FileController {

    @PostMapping("/convertFileToBase64")
    public ResponseEntity<?> convertFileToBase64(@RequestParam("file") MultipartFile file,
                                                 @RequestParam("params") HashMap<String, Object> params) throws IOException {
        
        if (file.isEmpty()) {
            return ResponseEntity.badRequest().body("File is empty");
        }
        
        // 将文件转换为 base64 字符串
        String base64String = Base64Utils.encodeToString(file.getBytes());
        
        // 处理其他参数 params
        // ...
        // 返回 base64 字符串和其他处理结果
        HashMap<String, Object> response = new HashMap<>();
        response.put("base64String", base64String);
        // ...
        
        return ResponseEntity.ok(response);
    }



    @PostMapping("/generate-doc")
    public String template(@RequestBody Map<String,Object> stringObjectMap){
        // 获取 Word 模板所在路径
        String filepath = "src/main/resources/template.docx";
        // 通过 XWPFTemplate 编译文件并渲染数据到模板中
        XWPFTemplate template = XWPFTemplate.compile(filepath).render(stringObjectMap);
        try {
            // 将完成数据渲染的文档写出
            template.writeAndClose(new FileOutputStream("src/main/resources/output.docx"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "success";
    }
}


http://www.kler.cn/a/374518.html

相关文章:

  • 蓝牙MCU蓝牙医疗检测相关案例
  • 「C/C++」C/C++标准库 之 <cstring> 字符串操作库
  • 分析 std::optional 的使用与常见错误
  • 网关三问:为什么微服务需要网关?什么是微服务网关?网关怎么选型?
  • 无人机救援系统基本组成
  • 拍拍贷鸿蒙版H5容器之路
  • Spring学习笔记_13——@Autowired
  • 内网穿透技术选型PPTP(点对点隧道协议)和 FRP(Fast Reverse Proxy)
  • 手机功耗异常大数据看板建设
  • IMU技术引领骑行新体验
  • linux中网口测试
  • JVM—类加载器、双亲委派机制
  • git入门教程6:git基本版本控制
  • 中英文如何快速切换?小达人盘点10款翻译工具给你
  • 芯片技术创新,GPU 服务器厂家聚焦服务器性能新巅峰
  • Nuxt.js 应用中的 components:extend 事件钩子详解
  • CSS常用标签笔记
  • 详解汉明纠错码原理以及FPGA实现
  • Jetson Xavier nx在Ubuntu18.04下安装ros2 使用奥比中光330
  • Python+Appium+Pytest+Allure自动化测试框架-代码篇
  • springboot获取七牛云文件上传凭证token
  • 从二维图像到三维重建:由运动到结构(SfM)的完整流程推导【含数学原理及推导】
  • 基于STM32+华为云IOT设计的大棚育苗管理系统
  • Java 反射
  • 图论BFS
  • 微信小程序之流浪动物救助:爱与希望同行