75

有没有其他方法可以使用 Apache POI 库在 Excel 中合并单元格?

我正在尝试使用以下内容,但它不起作用

// selecting the region in Worksheet for merging data
CellRangeAddress region = CellRangeAddress.valueOf("A" + rowNo + ":D"
            + rowNo);

// merging the region
sheet1.addMergedRegion(region);
4

5 回答 5

171

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

示例sheet.addMergedRegion(new CellRangeAddress(1,1,1,4));将从 B2 合并到 E2。请记住,它是基于零的索引(例如 POI 版本 3.12)。

有关详细信息,请参阅BusyDeveloper 指南

于 2013-09-10T11:04:42.883 回答
9

您可以使用 :

sheet.addMergedRegion(new CellRangeAddress(startRowIndx, endRowIndx, startColIndx,endColIndx));

确保 CellRangeAddress 与其他合并区域不重合,因为这将引发异常。

  • 如果要合并单元格,请保持列索引相同
  • 如果要合并单行中的单元格,请保持行索引相同
  • 索引从零开始

对于您尝试执行的操作,这应该有效:

sheet.addMergedRegion(new CellRangeAddress(rowNo, rowNo, 0, 3));
于 2018-07-17T14:51:50.730 回答
6

最佳答案

sheet.addMergedRegion(new CellRangeAddress(start-col,end-col,start-cell,end-cell));
于 2017-07-19T12:40:57.603 回答
4

如果需要,我创建了一个合并单元格并放置边框的方法。

protected void setMerge(Sheet sheet, int numRow, int untilRow, int numCol, int untilCol, boolean border) {
    CellRangeAddress cellMerge = new CellRangeAddress(numRow, untilRow, numCol, untilCol);
    sheet.addMergedRegion(cellMerge);
    if (border) {
        setBordersToMergedCells(sheet, cellMerge);
    }

}  

protected void setBordersToMergedCells(Sheet sheet, CellRangeAddress rangeAddress) {
    RegionUtil.setBorderTop(BorderStyle.MEDIUM, rangeAddress, sheet);
    RegionUtil.setBorderLeft(BorderStyle.MEDIUM, rangeAddress, sheet);
    RegionUtil.setBorderRight(BorderStyle.MEDIUM, rangeAddress, sheet);
    RegionUtil.setBorderBottom(BorderStyle.MEDIUM, rangeAddress, sheet);
}
于 2018-02-05T23:45:55.943 回答
0

语法是:

sheet.addMergedRegion(new CellRangeAddress(start-col,end-col,start-cell,end-cell));

例子:

sheet.addMergedRegion(new CellRangeAddress(4, 4, 0, 5));

这里将第 4 行的单元格 0 到单元格 5 合并。

于 2019-12-02T06:22:07.077 回答