NPOI-Styling合并单元格
NPOI-Styling merged cell
我想在合并的单元格中设置 ForegroundColor 和居中文本。
是否可以通过 NPOI 做到这一点?
这是我的table:
我知道如何设置border.But我找不到关于更改合并单元格样式的资源。
有人可以给我一些提示或帮助吗?
对于行,您必须像这样单独设置
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);
我想在合并的单元格中设置 ForegroundColor 和居中文本。
是否可以通过 NPOI 做到这一点?
这是我的table:
我知道如何设置border.But我找不到关于更改合并单元格样式的资源。
有人可以给我一些提示或帮助吗?
对于行,您必须像这样单独设置
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);