Java 使用ApachePOI在Excel中合并单元格

Java 使用ApachePOI在Excel中合并单元格,java,android,excel,apache-poi,Java,Android,Excel,Apache Poi,是否有其他方法可以使用ApachePOI库在Excel中合并单元格 我试着使用下面的方法,但它不起作用 // selecting the region in Worksheet for merging data CellRangeAddress region = CellRangeAddress.valueOf("A" + rowNo + ":D" + rowNo); // merging the region sheet1.addMergedRegion(region

是否有其他方法可以使用ApachePOI库在Excel中合并单元格

我试着使用下面的方法,但它不起作用

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

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

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

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

有关详细信息,请参阅最佳答案

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

我创建了一个方法,可以根据需要合并单元格并放置边框

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);
}
您可以使用:

sheet.addMergedRegion(new CellRangeAddress(startRowIndx, endRowIndx, startColIndx,endColIndx));
确保CellRangeAddress与其他合并区域不一致,因为这将引发异常

  • 如果要将单元格彼此合并,请保持列索引相同
  • 如果要合并单行中的单元格,请保持行索引相同
  • 索引是以零为基础的
对于您试图做的事情,这应该是可行的:

sheet.addMergedRegion(new CellRangeAddress(rowNo, rowNo, 0, 3));
语法是:

例如:


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

您所说的“不工作”是什么意思?抛出错误?心烦意乱?合并不同的区域?整天坐着看电视?;-)单元格不合并..excel保持不变..如果在此之后,excel说它必须修复文件,请确保在修复时没有重叠单元格merging@golimar你所说的重叠细胞是什么意思?@JamesKleeh举个例子,创建一个合并区域A1+A2和另一个合并区域A2+A3请注意,CellRangeAddress有两个版本:一个版本是
org.apache.poi.ss.util.CellRangeAddress
,另一个版本是
org.apache.poi.hssf.util.CellRangeAddress
。参见“最佳答案”,变量中可能不应包含负号。而且,变量是完全错误的:列位于第三和第四位置,而不是第一和第二位置。这是最健康的答案。还解释了合并的一般准则。
sheet.addMergedRegion(new CellRangeAddress(start-col,end-col,start-cell,end-cell));
sheet.addMergedRegion(new CellRangeAddress(4, 4, 0, 5));