| package com.doumee.core.excel; | 
|   | 
| import com.doumee.core.constants.ResponseStatus; | 
| import com.doumee.core.exception.BusinessException; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.dao.business.model.YwTempConfig; | 
| import org.apache.poi.xwpf.usermodel.XWPFDocument; | 
| import org.apache.poi.xwpf.usermodel.XWPFParagraph; | 
| import org.apache.poi.xwpf.usermodel.XWPFRun; | 
|   | 
| import javax.servlet.http.HttpServletResponse; | 
| import java.io.*; | 
| import java.net.HttpURLConnection; | 
| import java.net.URL; | 
| import java.net.URLEncoder; | 
| import java.nio.charset.Charset; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
|   | 
| /** | 
|  * Created by IntelliJ IDEA. | 
|  * | 
|  * @Author : Rk | 
|  * @create 2025/1/3 9:11 | 
|  */ | 
| public class ExcelReplaceCommon { | 
|   | 
| //    public static void main(String[] args) { | 
| //        modifyWordTemplate("https://bdreport.oss-cn-beijing.aliyuncs.com/xczl/20250110/temp/BE9C167EE35C40E78029C68BABBD0EAB.docx", "d://output.docx", "张三", "Java课程"); | 
| //    } | 
|   | 
|   | 
|   | 
|   | 
|   | 
|     public static String modifyWordTemplate(String templatePath, List<YwTempConfig> ywTempConfigList,String fileName) { | 
|         try ( | 
|              XWPFDocument document = new XWPFDocument(getFileInputStream(templatePath))) { | 
|             // 此处连接到后续替换步骤 | 
|             // 遍历段落 | 
|             for (XWPFParagraph paragraph : document.getParagraphs()) { | 
|                 for (XWPFRun run : paragraph.getRuns()) { | 
|                     // 替换占位符 | 
|                     String text = run.getText(0); | 
|                     if (text != null) { | 
|                         for (YwTempConfig ywTempConfig:ywTempConfigList | 
|                              ) { | 
|                             text = text.replace(ywTempConfig.getTitle(), ywTempConfig.getUrl()); | 
|                         } | 
|                         run.setText(text, 0); // 重新设置文本 | 
|                     } | 
|                 } | 
|             } | 
|             String path = "d://"+fileName; | 
|             try (FileOutputStream fos = new FileOutputStream(path)) { | 
|                 document.write(fos); // 将修改后的文档写入输出流 | 
|             } | 
|             return path; | 
|             /*//二进制OutputStream | 
|             ByteArrayOutputStream baos = new ByteArrayOutputStream(); | 
|             document.write(baos);//文档写入流 | 
|             //OutputStream写入InputStream二进制流 | 
|             ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray()); */ | 
|         } catch (IOException e) { | 
|             e.printStackTrace(); | 
|         } | 
|         throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"文件转换异常!"); | 
|     } | 
|   | 
|     /*读取网络文件*/ | 
|     public static InputStream getFileInputStream(String path) { | 
|         URL url = null; | 
|         try { | 
|             url = new URL(path); | 
|             HttpURLConnection conn = (HttpURLConnection)url.openConnection(); | 
|             //设置超时间为3秒 | 
|             conn.setConnectTimeout(3*1000); | 
|             //防止屏蔽程序抓取而返回403错误 | 
|             conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); | 
|             //得到输入流 | 
|             return conn.getInputStream(); | 
|         } catch (Exception e) { | 
|   | 
|         } | 
|         return null; | 
|     } | 
|   | 
|   | 
|   | 
| } |