通用导出到java对象的Excel

时间:2014-10-20 12:07:34

标签: java excel spring java-ee export-to-excel

在我们的spring项目中,我们有许多控制器接收客户端输入(过滤器),这将从数据库创建动态查询,结果集将返回给客户端。

例如:

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

我们的新要求非常简单: &#34;请允许将这些结果列表导出到excel文件&#34;

导出到excel文件的整个想法已经得到了解决。 (我们有一个非常强大的Excel提供商)

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

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

想法:

1)创建一个枚举,其中包含每个模型对象的所有配置和列名称(似乎非常冗余和维护地狱)

2)使用反射可能吗?甚至可能为Excel列名称的字段使用注释

3)其他?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

存在BeanInfo API元信息存储为与DTO类并行的Java类。这特别适用于这种情况。但可能过度杀伤。

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

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