Open LanXiu0523 opened 2 months ago
比如对于实体类
public class scoreTable { private String studentName; private String score; private Map<String, Long> subScore; }
对于每次查询,subScore 的项不一定一样,但可以保证一次查询中每一个实体中的 Map 的 key 都是一样的 如查询某次数学成绩,我的显示:
| 姓名 | 分数 | 选择 | 填空 | ------------------------- | 小明 | 90 | 40 | 50 |
再如查询某次英语成绩,我的显示:
| 姓名 | 分数 | 完形 | 阅读 | 作文 | -------------------------------- | 小明 | 70 | 20 | 20 | 30 |
目前,对于 easyexcel 我并未找到这种通过 Map 实现动态列的表格的导出方式,因此我自定义了工具类,读取表头和每一行数据,然后用一下的方式导出:
List<List<String>> headers = (List<List<String>>) excelExportData.get("headers"); List<List<Object>> rows = (List<List<Object>>) excelExportData.get("rows"); EasyExcel.write(filePath) .head(headers) .sheet(sheetName) .doWrite(rows);
现在的问题是,以上方式没法拿到 scoreTable.class 的信息,因此 转换器注解、格式化注解等注解就无法识别,我只能在 excelExportData.get("rows") 的方法中手动实现 转换器注解、格式化注解的生效,比较麻烦且不能复用 easyexcel 的注解解析能力。 如果以 EasyExcel.write(filePath, scoreTable.class) 的方式 拿到 scoreTable.class 的信息,就又会覆盖掉 head(headers) 设置的表头。
是否有更优雅的方式解决这个问题呢?
同问
比如对于实体类
对于每次查询,subScore 的项不一定一样,但可以保证一次查询中每一个实体中的 Map 的 key 都是一样的 如查询某次数学成绩,我的显示:
再如查询某次英语成绩,我的显示:
目前,对于 easyexcel 我并未找到这种通过 Map 实现动态列的表格的导出方式,因此我自定义了工具类,读取表头和每一行数据,然后用一下的方式导出:
现在的问题是,以上方式没法拿到 scoreTable.class 的信息,因此 转换器注解、格式化注解等注解就无法识别,我只能在 excelExportData.get("rows") 的方法中手动实现 转换器注解、格式化注解的生效,比较麻烦且不能复用 easyexcel 的注解解析能力。 如果以 EasyExcel.write(filePath, scoreTable.class) 的方式 拿到 scoreTable.class 的信息,就又会覆盖掉 head(headers) 设置的表头。
是否有更优雅的方式解决这个问题呢?