web-dev-qa-db-fra.com

Fusion de cellules dans Excel avec Apache POI

Existe-t-il un autre moyen de fusionner des cellules dans Excel à l'aide de la bibliothèque de POI Apache?

J'essayais d'utiliser ce qui suit, mais ça ne marche pas

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

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

Vous pouvez utiliser sheet.addMergedRegion(rowFrom,rowTo,colFrom,colTo);

exemple sheet.addMergedRegion(new CellRangeAddress(1,1,1,4)); fusionnera de B2 à E2. Rappelez-vous qu’il s’agit d’une indexation à base zéro (ex. POI version 3.12).

pour plus de détails, consultez Guide BusyDeveloper's

130
Sankumarsingh

La meilleure réponse

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

Vous pouvez utiliser :

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

Assurez-vous que CellRangeAddress ne coïncide pas avec les autres régions fusionnées, car cela lève une exception.

  • Si vous souhaitez fusionner des cellules les unes sur les autres, conservez les index de colonne.
  • Si vous souhaitez fusionner des cellules qui se trouvent dans une seule ligne, conservez les mêmes index.
  • Les index sont à base zéro

Pour ce que vous essayez de faire, cela devrait fonctionner:

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

j'ai fait une méthode qui fusionne les cellules et met la frontière.

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