Merge remote-tracking branch 'origin/main'

This commit is contained in:
2025-10-10 10:01:55 +08:00
3 changed files with 45 additions and 51 deletions

View File

@@ -66,8 +66,8 @@ public class EasyPoiWordExportServiceImpl implements EasyPoiWordExportService {
private final PqUserLedgerMapper pqUserLedgerMapper;
private final PqsDicTreeMapper pqsDicTreeMapper;
private final ObjectMapper mapper = new ObjectMapper();
@Value("${business.wordTemplatePath}")
private String wordTemplatePath;
// @Value("${business.wordTemplatePath}")
// private String wordTemplatePath;
@Override
public void test(HttpServletResponse response, ReportExportParam param) {
@@ -164,7 +164,7 @@ public class EasyPoiWordExportServiceImpl implements EasyPoiWordExportService {
Map<String,Object> map = mapper.convertValue(bjReportDTO,Map.class);
WordTemplate.generateWordDownload(wordTemplatePath+"/test.docx", response, bjReportDTO.getDateFormat()+"重要敏感用户电压暂降事件监测情况.docx", map);
WordTemplate.generateWordDownload("template/test.docx", response, bjReportDTO.getDateFormat()+"重要敏感用户电压暂降事件监测情况.docx", map);
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -1,6 +1,7 @@
package com.njcn.product.event.report.utils;
import cn.afterturn.easypoi.word.WordExportUtil;
import cn.afterturn.easypoi.word.entity.MyXWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
@@ -24,19 +25,19 @@ public class WordTemplate {
public static void main(String[] args) throws Exception {
// 模板文件路径
// 1. 处理模板路径并获取输入流
String temPath = getTemplateInputStream("template/test.docx");
if (temPath == null) {
throw new FileNotFoundException("模板文件不存在: template/test.docx");
}
// 准备数据
Map<String, Object> map = new HashMap<>();
map.put("title", "用户信息表");
map.put("userList", getUsersData()); // 假设getUsersData()方法返回用户数据列表
// 导出 Word 文档
XWPFDocument doc = WordExportUtil.exportWord07(temPath, map);
try (FileOutputStream outStream = new FileOutputStream("user_info.docx")) {
doc.write(outStream);
}
// String temPath = getTemplateInputStream("template/test.docx");
// if (temPath == null) {
// throw new FileNotFoundException("模板文件不存在: template/test.docx");
// }
// // 准备数据
// Map<String, Object> map = new HashMap<>();
// map.put("title", "用户信息表");
// map.put("userList", getUsersData()); // 假设getUsersData()方法返回用户数据列表
// // 导出 Word 文档
// XWPFDocument doc = WordExportUtil.exportWord07(temPath, map);
// try (FileOutputStream outStream = new FileOutputStream("user_info.docx")) {
// doc.write(outStream);
// }
}
private static List<Map<String, String>> getUsersData() {
@@ -59,12 +60,14 @@ public class WordTemplate {
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1"));
response.setCharacterEncoding("UTF-8");
// 1. 处理模板路径并获取输入流
// String temPath = getTemplateInputStream(templatePath);
// if (temPath == null) {
// throw new FileNotFoundException("模板文件不存在: " + templatePath);
// }
InputStream temPath = getTemplateInputStream(templatePath);
if (temPath == null) {
throw new FileNotFoundException("模板文件不存在: " + templatePath);
}
// 渲染文档并响应
XWPFDocument document = WordExportUtil.exportWord07(templatePath, data);
MyXWPFDocument document = new MyXWPFDocument (temPath);
WordExportUtil.exportWord07(document, data);
mergeTableCells(document);
try (OutputStream outputStream = response.getOutputStream()) {
document.write(outputStream);
@@ -83,22 +86,22 @@ public class WordTemplate {
* @param outputPath 输出文件路径
* @throws IOException 当模板不存在或IO操作失败时抛出
*/
public static void exportWord(String templatePath, Map<String, Object> data, String outputPath) throws IOException {
// 1. 处理模板路径并获取输入流
String temPath = getTemplateInputStream(templatePath);
if (temPath == null) {
throw new FileNotFoundException("模板文件不存在: " + templatePath);
}
// 3. 写入输出文件
try (FileOutputStream outStream = new FileOutputStream(outputPath); XWPFDocument doc = WordExportUtil.exportWord07(temPath, data)) {
// 2. 导出Word文档
doc.write(outStream);
} catch (Exception e) {
e.printStackTrace();
}
}
// public static void exportWord(String templatePath, Map<String, Object> data, String outputPath) throws IOException {
// // 1. 处理模板路径并获取输入流
// String temPath = getTemplateInputStream(templatePath);
// if (temPath == null) {
// throw new FileNotFoundException("模板文件不存在: " + templatePath);
// }
//
// // 3. 写入输出文件
// try (FileOutputStream outStream = new FileOutputStream(outputPath); XWPFDocument doc = WordExportUtil.exportWord07(temPath, data)) {
// // 2. 导出Word文档
// doc.write(outStream);
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// }
/**
* 手动合并表格单元格
* 合并规则:相邻行中指定列的值相同时进行合并
@@ -185,19 +188,11 @@ public class WordTemplate {
* @param templatePath 模板路径
* @return 输入流若文件不存在则返回null
*/
private static String getTemplateInputStream(String templatePath) {
private static InputStream getTemplateInputStream(String templatePath) {
// 1. 尝试从classpath资源加载适用于Spring Boot项目的resources目录
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource(templatePath);
if (url != null) {
return url.getPath();
}
InputStream inputStream = classLoader.getResourceAsStream(templatePath);
// 2. 尝试从绝对路径加载
File file = new File(templatePath);
if (file.exists() && file.isFile()) {
return file.getPath();
}
return null;
return inputStream;
}
}

View File

@@ -20,9 +20,9 @@ mybatis-plus:
#驼峰命名
map-underscore-to-camel-case: true
#配置sql日志输出
#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#关闭日志输出
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
# log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
global-config:
db-config:
#指定主键生成策略
@@ -38,7 +38,6 @@ db:
business:
#处理波形数据位置
wavePath: D://Comtrade
wordTemplatePath: D:/wordTemplatePath
#wavePath: /usr/local/comtrade
#处理临时数据
tempPath: D://file