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

1.9 KiB
Raw Blame History

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