通用导出到Java对象的Excel

在我们的Spring项目中,我们有许多控制器接收客户端input(filter),这将从DB创builddynamic查询,结果集返回给客户端。

例如:

public List<UserResultDTO> getUsers(Filter filter); public List<TransactionResultDTO> getTransactions(Filter filter); public List<ProfileResultDTO> getProfile(Filter filter); 

我们的新要求非常简单:“请允许将这些结果列表导出到Excel文件中”

输出到excel文件的整个想法已经被处理了。 (我们有一个非常强大的Excel提供程序)

所以我们的目标基本上是创build一个非常通用的函数\服务,将采取一个列表,并将能够以通用的方式导出它。

任何想法什么是这种任务的最佳做法?

想法:

1)创build一个枚举,该列表将包含每个模型对象的所有configuration和列名(看起来非常冗余和维护地狱)

2)使用reflection也许? 甚至可能使用Excel列名的字段的注释

3)其他?

谢谢!

当然不是枚举; 这将增加人为的相互依赖性:如果一些独立的DTO被改变,那么枚举被访问几次。

有一个BeanInfo API ,作为Java类存储的元信息与DTO类平行。 这特别是针对这种情况。 但也许矫枉过正

所以它可能归结为您自己的适配器,使用reflection给出合理的输出。 使用声明性方法自动检测改进:

  • (不是很好)的注释(DTOs是如何开发的?)
  • 具有完整类名的XML或.properties; 每个类一个XML