Spring批处理 - 如何生成一个批处理作业的输出文件作为excel表

问题描述:

我有一个简单的弹簧批处理程序,它从INPUT文件中读取数据并写入OUTPUT文件。Spring批处理 - 如何生成一个批处理作业的输出文件作为excel表

输入文件有50000条记录,我的块大小为1000

有输入文件即五列。一,二,三,四,五

我的要求是创建一个excel文件(.xls文件)作为输出。

创建excel文件(.xls)没有开箱即用的支持。有两种选择。

  1. 创建输出为CSV文件(FlatFileItemWriter),然后可以在Excel中打开 。这是最简单的选择,并且对于大多数应用程序来说足够了。
  2. 其他选项是实现创建 使用像Apache POI或JEXL
+0

我也将CSV视为一种选择。但是,如果列数据本身具有“逗号”,那该怎么办?如何解决这个情况? – Nik

+0

它需要被包含在双重qoutes - 你不必这样做,春天的批量内置支持生成CSV - 它处理所有这些情况。 – gkamal

+0

感谢您的建议。你能详细解释一下吗?我们应该在哪里放双引号? – Nik

一些库中的Excel文件的自定义FileItemWriter如果CSV文件是不够的,你需要实现自己的ItemWriter,可以使用一个的可用Excel库(例如JExcelApiApache POI)将“项目”写入Excel文件。

我会从扩展ItemWriter开始。确保你最后关闭了XLS文件。

有关创建新XLS文档的示例,请参阅POI quick guide

+0

使用这些库的问题是,它们一次处理一行数据(我认为是这样!!)..它会不会是一个很大的性能打击? – Nik

有弹簧一批扩建工程,提供和Excel Reader和Writer开箱 - https://github.com/mdeinum/spring-batch-extensions/tree/master/spring-batch-excel

底层IT支持POI和JExcel - 尽管Excel中的较新版本的POI工作

+1

此Spring批处理扩展仅包含Excel的ItemReader实现。 OP的要求是创建文件 –

+0

对,我的不好。该项目不包含项目编写器扩展。 –