使用Apache POI在Excel中合并单元格

时间:2013-09-10 10:07:16

标签: java android excel apache-poi

有没有其他方法可以使用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);

5 个答案:

答案 0 :(得分:123)

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

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

详情请参阅BusyDeveloper's Guide

答案 1 :(得分:6)

最佳答案

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

答案 2 :(得分:4)

您可以使用:

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

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

  • 如果您要合并一个以上的单元格,请保持列索引相同
  • 如果要合并单行中的单元格,请保持行索引不变
  • 索引从零开始

对于您尝试执行的操作应该可以:

sheet.addMergedRegion(new CellRangeAddress(rowNo, rowNo, 0, 3));

答案 3 :(得分:2)

我做了一个合并单元格并放置边框的方法。

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);
}

答案 4 :(得分:0)

语法是:

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

示例:

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

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