web-dev-qa-db-ja.com

Apache POIを使用してExcelでセルを結合する

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);
55
androidDev

sheet.addMergedRegion(rowFrom,rowTo,colFrom,colTo);を使用できます

sheet.addMergedRegion(new CellRangeAddress(1,1,1,4));はB2からE2にマージします。これはゼロベースのインデックス付けであることに注意してください(例:POIバージョン3.12)。

詳細については BusyDeveloper's Guide を参照してください

130
Sankumarsingh

最高の答え

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

以下を使用できます。

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

CellRangeAddressが例外をスローするため、他のマージされた領域と一致しないことを確認してください。

  • セルを上下に結合する場合は、列のインデックスを同じに保ちます
  • 単一の行にあるセルを結合する場合は、行インデックスを同じにしてください
  • インデックスはゼロベースです

あなたがこれをやろうとしていたことがうまくいくはずです:

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

セルをマージして境界線を配置するメソッドを作成しました。

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);
}
2
Jesús Sánchez