NPOI-Styling объединенная ячейка

Я хочу изменить ForegroundColor и установить текст в центре объединенной ячейки.

Возможно ли это сделать через НКОИ?

Это мой стол: введите описание изображения здесь

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

Может кто-нибудь дать мне несколько советов или помочь?

1 ответ

Решение

Для строки вы должны будете установить индивидуально, как это

XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet("Template");
XSSFCellStyle headerStyle = (XSSFCellStyle)workbook.CreateCellStyle();
headerStyle.WrapText = true;
headerStyle.FillForegroundColor = IndexedColors.LightBlue.Index;
headerStyle.Alignment = HorizontalAlignment.Center;
var row = sheet.CreateRow(0);
row.Cells[YourheaderIndex].CellStyle = headerStyle;

Для столбцов вы можете установить стиль как

XSSFCellStyle defaultStyle = (XSSFCellStyle)workbook.CreateCellStyle();
defaultStyle.WrapText = true;
defaultStyle.Alignment = HorizontalAlignment.Left;
defaultStyle.VerticalAlignment = VerticalAlignment.Top;
sheet.SetDefaultColumnStyle(YourheaderIndex, defaultStyle);

Чтобы применить стиль к объединенной ячейке, вы можете попробовать этот подход, хотя код не проверен, но он даст хорошую идею для доступных методов в NPOI

int mergedRegions = sheet.NumMergedRegions;
for (int regions = 0; regions < mergedRegions; regions++)
{
    CellRangeAddress mergedRegionIndex = sheet.GetMergedRegion(regions);

    for (int currentRegion = mergedRegionIndex.FirstRow; currentRegion < mergedRegionIndex.LastRow; currentRegion++)
    {
        var currentRow = sheet.GetRow(currentRegion);

        for (int currentCell = mergedRegionIndex.FirstColumn; currentCell < mergedRegionIndex.LastColumn; currentCell++)
        {
            // sheet.SetDefaultColumnStyle(i, mandatoryCellStyle);
            currentRow.Cells[currentCell].CellStyle = headerStyle;
        }
    }
}
  var cra = new NPOI.SS.Util.CellRangeAddress(rowNum, rowNum + 6, 2, 5);
            excelSheet.AddMergedRegion(cra);          
            RegionUtil.SetBorderBottom(1, cra, excelSheet, workbook);//Bottom border  
            RegionUtil.SetBorderLeft(1, cra, excelSheet, workbook);//Left border  
            RegionUtil.SetBorderRight(1, cra, excelSheet, workbook);//Right border  
            RegionUtil.SetBorderTop(1, cra, excelSheet, workbook);
Другие вопросы по тегам