//package com.ruoyi.web.controller.tool;
|
//
|
//import org.apache.poi.xwpf.usermodel.*;
|
//import java.io.*;
|
//import java.util.*;
|
//
|
//public class WordTemplateProcessor {
|
//
|
// public static void fillTemplate(String templatePath, String outputPath,Map<String, String> dataMap) {
|
// try {
|
// // 读取模板文件
|
// FileInputStream fis = new FileInputStream(templatePath);
|
// XWPFDocument document = new XWPFDocument(fis);
|
//
|
// // 替换段落中的标记
|
// for (XWPFParagraph paragraph : document.getParagraphs()) {
|
// replaceParagraph(paragraph, dataMap);
|
// }
|
//
|
// // 替换表格中的标记
|
// for (XWPFTable table : document.getTables()) {
|
// for (XWPFTableRow row : table.getRows()) {
|
// for (XWPFTableCell cell : row.getTableCells()) {
|
// for (XWPFParagraph paragraph : cell.getParagraphs()) {
|
// replaceParagraph(paragraph, dataMap);
|
// }
|
// }
|
// }
|
// }
|
//
|
// // 保存文件
|
// FileOutputStream fos = new FileOutputStream(outputPath);
|
// document.write(fos);
|
//
|
// // 关闭资源
|
// fos.close();
|
// fis.close();
|
// document.close();
|
//
|
// System.out.println("模板填充完成!文件保存在: " + outputPath);
|
//
|
// } catch (Exception e) {
|
// e.printStackTrace();
|
// }
|
// }
|
//
|
// private static void replaceParagraph(XWPFParagraph paragraph, Map<String, String> dataMap) {
|
// String paragraphText = paragraph.getText();
|
// for (Map.Entry<String, String> entry : dataMap.entrySet()) {
|
// if (paragraphText.contains(entry.getKey())) {
|
// List<XWPFRun> runs = paragraph.getRuns();
|
// TextSegment found = paragraph.searchText(entry.getKey(), new PositionInParagraph());
|
// if (found != null) {
|
// // 替换文本
|
// int beginRun = found.getBeginRun();
|
// int endRun = found.getEndRun();
|
//
|
// if (beginRun >= 0 && endRun >= 0) {
|
// // 删除原有runs
|
// for (int runPos = beginRun; runPos <= endRun; runPos++) {
|
// paragraph.removeRun(runPos);
|
// }
|
// // 创建新run
|
// XWPFRun newRun = paragraph.insertNewRun(beginRun);
|
// newRun.setText(entry.getValue());
|
// // 复制原有格式
|
// if (runs.size() > 0 && runs.get(0) != null) {
|
// XWPFRun styleRun = runs.get(0);
|
// newRun.setFontFamily(styleRun.getFontFamily());
|
// newRun.setFontSize(styleRun.getFontSize());
|
// newRun.setBold(styleRun.isBold());
|
// newRun.setItalic(styleRun.isItalic());
|
// }
|
// }
|
// }
|
// }
|
// }
|
// }
|
//
|
// public static void main(String[] args) {
|
//
|
// String templatePath = "/path/to/template.docx";
|
// String outputPath = "/path/to/output.docx";
|
//
|
//// fillTemplate(templatePath, outputPath, user);
|
// }
|
//}
|