Merging cells in Excel using Apache POI

前端 未结 5 808
醉话见心
醉话见心 2020-12-02 16:49

Is there any other way to merge cells in Excel using Apache POI library?

I was trying using the following, but its not working

// selecting the regio         


        
相关标签:
5条回答
  • 2020-12-02 16:56

    The best answer

    sheet.addMergedRegion(new CellRangeAddress(start-col,end-col,start-cell,end-cell));
    
    0 讨论(0)
  • 2020-12-02 17:01

    i made a method that merge cells and put border.

    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);
    }
    
    0 讨论(0)
  • 2020-12-02 17:09

    You can use sheet.addMergedRegion(rowFrom,rowTo,colFrom,colTo);

    example sheet.addMergedRegion(new CellRangeAddress(1,1,1,4)); will merge from B2 to E2. Remember it is zero based indexing (ex. POI version 3.12).

    for detail refer BusyDeveloper's Guide

    0 讨论(0)
  • 2020-12-02 17:09

    syntax is:

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

    Example:

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

    Here the cell 0 to cell 5 will be merged of the 4th row.

    0 讨论(0)
  • 2020-12-02 17:21

    You can use :

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

    Make sure the CellRangeAddress does not coincide with other merged regions as that will throw an exception.

    • If you want to merge cells one above another, keep column indexes same
    • If you want to merge cells which are in a single row, keep the row indexes same
    • Indexes are zero based

    For what you were trying to do this should work:

    sheet.addMergedRegion(new CellRangeAddress(rowNo, rowNo, 0, 3));
    
    0 讨论(0)
提交回复
热议问题