# 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`。