输出具有多个工作表的单个Excel文件

时间:2014-12-01 04:23:14

标签: excel etl talend

Talend Open Studio for Data Integration中是否有一个组件能够输出单个Excel文件,但其中包含2个单独的工作表?

我想将原始文件中的某些列分隔为另一个工作表,将另一组列分隔到第二个工作表。

1 个答案:

答案 0 :(得分:3)

您需要将数据输出到两个单独的tFileOutputExcel组件中,第二个组件设置为将数据作为不同的表单附加到文件中。

一个简单的示例包含一些名称和年龄数据,这些数据针对唯一ID,需要将其拆分为两个单独的工作表,其中一个工作表上包含id和name,另一个工作表上包含id和age。

Example job layout

我使用tRowGenerator组件生成此数据,该组件配置为生成id和随机名字的序列以及18到75之间的年龄:

Row generator using Talend's tRowGenerator component

然后我使用tMap组件分割这些数据:

Splitting the data using a tMap

第一个数据流可以转到第一个tFileOutputExcel组件,以创建一个" Names"片:

First tFileOutputExcel component to create the file and the "Names" sheet

不幸的是,我们不能直接将第二张数据输出到下一个文件,因为Talend需要在Excel文件上打开写锁定。因此,在这种情况下,我们使用tBufferOutput组件将数据存储到内存中(尽管我们也可以使用tHashOutput组件,或者如果可能超过总内存,可能会将数据存储在临时文件或数据库中)。

完成第一个子作业后,将名称数据写入目标文件的名称表,然后我们可以从缓冲区读取Age数据,然后读入第二个tFileOutputExcel,然后将其配置为将数据表附加到目标文件:

Second tFileOutputExcel component appending the "Ages" sheet to the target output file