Объединение ячеек в Excel с использованием Apache POI

Есть ли другой способ объединить ячейки в Excel, используя библиотеку Apache POI?

Я пытался использовать следующее, но это не работает

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

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

4 ответа

Решение

Ты можешь использовать sheet.addMergedRegion(rowFrom,rowTo,colFrom,colTo);

пример sheet.addMergedRegion(new CellRangeAddress(1,1,1,4)); слится с В2 до Е2. Помните, что это индексация с нуля (напр., POI версии 3.12).

подробности см. в руководстве BusyDeveloper.

Ты можешь использовать:

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

Убедитесь, что CellRangeAddress не совпадает с другими объединенными регионами, поскольку это вызовет исключение.

  • Если вы хотите объединить ячейки друг над другом, оставьте индексы столбцов такими же
  • Если вы хотите объединить ячейки, которые находятся в одной строке, оставьте индексы строк одинаковыми
  • Индексы начинаются с нуля

То, что вы пытались сделать, должно сработать:

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

Я сделал метод, который объединяет клетки и ставит границу.

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(start-col,end-col,start-cell,end-cell));

синтаксис:

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

Пример:

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

Здесь ячейки 0 и 5 будут объединены с 4-й строкой.

Другие вопросы по тегам