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

How to merge cells and set value at the same time by using Apache POI?

我想合并我的 excel 模板文件中的一些单元格,然后在合并的单元格中设置值。这是我的 java 代码。在我添加 set value part 之前,它在合并单元格时效果很好。但是当我只添加 set value part 时,似乎没有任何变化,甚至没有合并单元格。我也尝试在merge cells part之后移动set value part,然后office提醒我修复输出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;
    }
}

您可以在excel个单元格中设置单元格值,然后根据您的要求合并单元格。

cell = sheet.getRow(row).getCell(0);
cell.setCellValue(d.a);

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

示例:

sheet.addMergedRegion(new CellRangeAddress(1,1,4,2)); will merge from D2 to F2. 

记住它是基于零的索引。

详情参考BusyDeveloper's Guide