Files
ccdi/openspec/changes/replace-poi-with-easyexcel/tasks.md

123 lines
4.4 KiB
Markdown
Raw Normal View History

2026-01-27 17:55:53 +08:00
# Tasks: Replace Apache POI with Alibaba EasyExcel
## 依赖更新与环境准备
- [x] 1.1 更新 `pom.xml`,添加 `easyexcel.version` 属性(版本 3.3.4
- [x] 1.2 更新 `ruoyi-common/pom.xml`,保留 `poi-ooxml` 依赖,添加 `easyexcel` 依赖
- [ ] 1.3 验证依赖解析成功:`mvn dependency:tree`
- [x] 1.4 备份现有的 `ExcelUtil.java` 文件到 `excel/` 目录(保留参考)
## 注解与接口适配
- [x] 2.1 更新 `Excel.java` 注解:
- [x] 2.1.1 移除 POI 类型的 import`HorizontalAlignment`, `IndexedColors`
- [x] 2.1.2 使用字符串替代(`align`, `headerBackgroundColor` 等)
- [x] 2.1.3 调整颜色属性为字符串表示
- [x] 2.1.4 更新 `Javadoc` 注释
- [x] 2.2 更新 `ExcelHandlerAdapter.java` 接口:
- [x] 2.2.1 保留原有方法签名
- [x] 2.2.2 添加 EasyExcel `Cell``Workbook` 类型适配说明
- [x] 2.3 验证注解编译无误
## 核心 ExcelUtil 重写
- [x] 3.1 创建新的 `ExcelUtil.java` 基础结构:
- [x] 3.1.1 保留泛型类定义 `ExcelUtil<T>`
- [x] 3.1.2 保留现有公共方法签名
- [x] 3.1.3 移除 POI 相关的私有字段和方法
- [x] 3.2 实现导出功能:
- [x] 3.2.1 `exportExcel(HttpServletResponse, List<T>, String, String)` - 主入口
- [x] 3.2.2 `exportExcel(HttpServletResponse, List<T>, String)` - 简化版
- [x] 3.2.3 `exportExcel()` - 返回文件名版本
- [x] 3.2.4 `importTemplateExcel()` - 生成导入模板
- [x] 3.3 实现导入功能:
- [x] 3.3.1 `importExcel(InputStream)` - 默认标题行
- [x] 3.3.2 `importExcel(InputStream, int titleNum)` - 自定义标题行
- [x] 3.3.3 `importExcel(String sheetName, InputStream, int titleNum)` - 指定 Sheet
- [x] 3.4 实现 EasyExcel 集成组件:
- [x] 3.4.1 `ExcelStyleHandler` - 样式处理器(基于 `@Excel` 注解)
- [x] 3.4.2 `ReadListener` - 读取监听器(内置在 `importExcel` 中)
- [x] 3.5 实现辅助功能:
- [x] 3.5.1 字典类型转换(`dictType`
- [x] 3.5.2 表达式转换(`readConverterExp`
- [x] 3.5.3 字段筛选(`showColumn`, `hideColumn`
- [ ] 3.5.4 日期格式化(`dateFormat`- EasyExcel 自动处理
- [ ] 3.5.5 自定义处理器(`handler`- 需要进一步适配
## 集成测试与验证
- [ ] 4.1 单元测试:
- [ ] 4.1.1 测试基本导出功能(少量数据)
- [ ] 4.1.2 测试大数据量导出10 万行)
- [ ] 4.1.3 测试基本导入功能
- [ ] 4.1.4 测试大文件导入100MB
- [ ] 4.1.5 测试超长文本单元格
- [ ] 4.1.6 测试样式应用
- [ ] 4.1.7 测试字典转换
- [ ] 4.1.8 测试字段筛选
- [ ] 4.2 现有功能集成测试:
- [ ] 4.2.1 测试 `SysUserController` 导入导出
- [ ] 4.2.2 测试 `SysRoleController` 导入导出
- [ ] 4.2.3 测试 `SysDictDataController` 导入导出
- [ ] 4.2.4 测试 `SysPostController` 导入导出
- [ ] 4.2.5 测试 `SysConfigController` 导入导出
- [ ] 4.2.6 测试 `SysOperlogController` 导入导出
- [ ] 4.2.7 测试 `SysLogininforController` 导入导出
- [ ] 4.2.8 测试 `SysJobController` 导入导出
- [ ] 4.2.9 测试 `SysJobLogController` 导入导出
- [ ] 4.3 性能验证:
- [ ] 4.3.1 使用 VisualVM 监控导出 10 万行数据的内存占用
- [ ] 4.3.2 使用 VisualVM 监控导入 100MB 文件的内存占用
- [ ] 4.3.3 记录并对比迁移前后的性能指标
## 文档更新
- [ ] 5.1 更新 `openspec/project.md`
- [ ] 5.1.1 添加 EasyExcel 到技术栈
- [ ] 5.1.2 更新项目约定中的 Excel 处理说明
- [ ] 5.2 创建 API 文档:
- [ ] 5.2.1 记录 `ExcelUtil` 公共方法的使用方式
- [ ] 5.2.2 记录 `@Excel` 注解的所有属性说明
- [ ] 5.2.3 提供迁移指南(如果 API 有变化)
- [ ] 5.3 更新 `CLAUDE.md`(如需要):
- [ ] 5.3.1 添加 Excel 相关的开发约定
## 依赖关系
```
1. 依赖更新
2. 注解适配
3. ExcelUtil 重写
4. 集成测试
5. 文档更新
```
## 并行任务
以下任务可以并行执行:
- 2.1-2.3(注解适配)可与 3.1-3.2ExcelUtil 基础结构)并行
- 4.1(单元测试)可与 4.2(集成测试)部分并行
## 验收标准
所有任务完成后,必须满足:
1. 编译通过,无依赖错误
2. 所有现有 Controller 的导入导出功能正常
3. 导出 10 万行数据内存占用 < 500MB
4. 导入 100MB 文件内存占用 < 200MB
5. 现有实体类注解无需修改