首页 文章

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

提问于
浏览
48

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

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

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

    详情请参阅BusyDeveloper's Guide

  • 118

    最好的答案

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

    您可以使用 :

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

    确保CellRangeAddress与其他合并区域不一致,因为它会引发异常 .

    • 如果要将单元格合并到另一个上面,请保持列索引相同

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

    • 索引为零

    对于你想要做的事情,这应该工作:

    sheet.addMergedRegion(new CellRangeAddress(rowNo, rowNo, 0, 3));
    
  • 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);
    }
    

相关问题