使用Talend ETL合并Excel单元格

时间:2014-05-05 12:15:20

标签: java excel talend

我想将MySQL数据写入Excel文件。在那里,我需要为我的数据创建表格边框,同时需要合并几个列标题。

我已完成映射以将MySQL数据加载到Excel工作表中。但我不知道如何创建表格边框以及合并列标题。

下面的代码将帮助我合并单元格,但是如何将这段代码合并到我的两个talend组件之间,

tMySQLInput - > tFileOutputExcel


import java.io。*;

import org.apache.poi.ss.usermodel。*;

import org.apache.poi.hssf.usermodel。*;

import org.apache.poi.ss.util.CellRangeAddress;

公共类MergeCellsAcrossColumns {

    public static void main(String[] args) throws Exception{
            /* Create Workbook and Worksheet */
            HSSFWorkbook my_workbook = new HSSFWorkbook();
            HSSFSheet my_sheet = my_workbook.createSheet("Merge Cells");                
            Row row = my_sheet.createRow((short) 1);
            Cell cell = row.createCell((short) 1);
            cell.setCellValue("Merge Data with Apache POI");
            my_sheet.addMergedRegion(new CellRangeAddress(
                    1, // mention first row here
                    1, //mention last row here, it is 1 as we are doing a column wise merging
                    1, //mention first column of merging
                    5  //mention last column to include in merge
                    ));
            /* Write changes to the workbook */
            FileOutputStream out = new FileOutputStream(new File("C:\\Merge_Across_Columns.xls"));
            my_workbook.write(out);
            out.close();


    }

}

1 个答案:

答案 0 :(得分:1)

您可以在组件之间使用tJavaRow。该组件允许您编写Java代码并转换数据。此组件具有输入和输出模式,您可以在其中指定此组件将采用的输入以及此组件将输出的输出。 下面的导入部分将移至tJavaRow的高级设置部分。

import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;

您可以在BAsic Settings部分编写Java代码 您可以通过

来参考输入数据模式列
input_row.column_name
and output as output_row.column_name

...(尝试使用GenerateCode选项查看input_row和output_row的工作原理)

理想情况下,对于合并/转换数据,您还可以使用tMap来合并/转换行并将数据输出到下一级