如何使用Apache POI同时合并单元格和设置值?

Ang*_*urt 5 java excel apache-poi

我想合并我的excel模板文件中的某些单元格,然后在合并的单元格中设置值。这是我的Java代码。在添加之前set value part,它在合并单元格时效果很好。但是当我只添加时set value part,即使没有任何单元合并,似乎也没有任何改变。set value part之后merge cells part,我也尝试移动,然后办公室提醒我修复输出的excel文件。

如何合并单元格并同时设置值?

for (int sht = 0; sht < 3; sht++) {
    sheet = workbook.getSheetAt(sht);
    row = 1;
    for (Data d : list) {
        // set value part
        cell = sheet.getRow(row).getCell(0);
        cell.setCellValue(d.a);
        cell = sheet.getRow(row).getCell(1);
        cell.setCellValue(d.b);
        cell = sheet.getRow(row).getCell(2);
        cell.setCellValue(d.c);
        // merge cells part
        sheet.addMergedRegion(new CellRangeAddress(row, row + 1, 0, 0));
        sheet.addMergedRegion(new CellRangeAddress(row, row + 1, 1, 1));
        sheet.addMergedRegion(new CellRangeAddress(row, row + 1, 2, 2));
        sheet.addMergedRegion(new CellRangeAddress(row, row + 1, 3, 3));
        //
        row += 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

Vig*_*hiv 5

您可以在excel单元格中设置CellValue,然后根据需要合并单元格。

cell = sheet.getRow(row).getCell(0);
cell.setCellValue(d.a);
Run Code Online (Sandbox Code Playgroud)

您可以使用 sheet.addMergedRegion(new CellRangeAddress(rowFrom,rowTo,colFrom,colTo));

例如:

sheet.addMergedRegion(new CellRangeAddress(1,1,4,2)); will merge from D2 to F2. 
Run Code Online (Sandbox Code Playgroud)

请记住,它是基于零的索引。

有关详细信息,请参见《BusyDeveloper指南》