Java 使用ApachePOI在Excel中合并单元格
是否有其他方法可以使用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
// 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));