Files
ccdi/docs/reports/implementation/2026-04-30-easyexcel-import-template-fontconfig-fix.md
2026-05-06 14:04:21 +08:00

36 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# EasyExcel 导入模板 Fontconfig 异常修复实施记录
## 保存路径确认
- 文档类型:实施记录
- 保存路径:`docs/reports/implementation/`
## 问题说明
- 请求地址:`/ccdi/baseStaff/importTemplate`
- 异常信息:`java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration`
- 触发链路:员工信息维护导入模板下载使用 `EasyExcelUtil.importTemplateWithDictDropdown` 生成双 Sheet 模板EasyExcel 默认创建 `SXSSFWorkbook`,在无可用字体配置的服务器环境中创建 Sheet 时会触发 POI/AWT 字体配置初始化异常。
## 修改内容
- 修改 `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/utils/EasyExcelUtil.java`
- 将导入模板下载相关写出入口统一改为 `inMemory(Boolean.TRUE)`
- 单 Sheet 普通模板
- 单 Sheet 带字典下拉模板
- 指定文件名的带字典下拉模板
- 双 Sheet 带字典下拉模板
- 普通数据导出入口保持流式写出,不改变大数据导出的内存特性。
## 影响范围
- 修复员工信息维护 `/ccdi/baseStaff/importTemplate` 模板下载。
- 同步覆盖复用同一工具方法的其他导入模板下载接口。
- 不改变导入解析逻辑、模板表头、字典下拉、必填标记和文本格式处理逻辑。
## 验证记录
- 已执行:`mvn -pl ccdi-info-collection -am -Dtest=EasyExcelUtilTemplateTest -Dsurefire.failIfNoSpecifiedTests=false test`
- 结果:失败,失败原因是本机 JDK 21 下 Mockito inline 自附加失败,错误为 `Could not self-attach to current VM`,未进入模板业务断言。
- 已执行:`mvn -pl ccdi-info-collection -am -Dtest=EasyExcelUtilTemplateTest -Dsurefire.failIfNoSpecifiedTests=false -DargLine=-javaagent:/Users/wkc/.m2/repository/net/bytebuddy/byte-buddy-agent/1.17.8/byte-buddy-agent-1.17.8.jar test`
- 结果:通过,`Tests run: 5, Failures: 0, Errors: 0, Skipped: 0`