gpt4 book ai didi

c# - NPOI 不会改变单元格的字体颜色

转载 作者:行者123 更新时间:2023-12-05 02:17:44 24 4
gpt4 key购买 nike

我正在尝试有条件地更改单元格的字体颜色。这是我最后一次尝试:

IWorkbook wb = null;

using (FileStream _fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
wb = WorkbookFactory.Create(_fileStream);
_fileStream.Close();
}



ISheet sheet = wb.GetSheet(sheetName);
IFont font = wb.CreateFont();
...
...

// within a loop
ICell cell = sheet.GetRow(r).GetCell(col);
if (integrity < 1)
{
ICellStyle redStyle = cell.CellStyle;
font.Color = IndexedColors.Red.Index;
redStyle.SetFont(font);
cell.CellStyle = redStyle;
}
else
{
ICellStyle normalStyle = cell.CellStyle;
font.Color = XSSFFont.DEFAULT_FONT_COLOR;
normalStyle.SetFont(font);
cell.CellStyle = normalStyle;
}

但是,满足条件时字体不会改变。似乎样式适用于所有单元格而不是我在循环中获得的单元格。我已经阅读了一些与此问题相关的问题,但我无法使其正常工作。

这个新尝试是格式化所有单元格。不管是否满足条件

ICellStyle redStyle = cell.CellStyle;
font.Color = IndexedColors.Red.Index;
redStyle.SetFont(font);

//This is how I am trying to change cells format
if (integrity < 1)
{
cell.CellStyle.SetFont(font);
}

Joao 响应将使用“normalStyle”格式化所有单元格

最佳答案

默认情况下,每个单元格都将使用相同的 CellStyle 对象。如果您希望不同的单元格具有不同的样式,则必须创建不同的对象。

ICellStyle redStyle = wb.CreateCellStyle();
font.Color = IndexedColors.Red.Index;
redStyle.SetFont(font);

ICellStyle normalStyle = wb.CreateCellStyle();
font.Color = XSSFFont.DEFAULT_FONT_COLOR;
normalStyle.SetFont(font);

// within a loop
ICell cell = sheet.GetRow(r).GetCell(col);
if (integrity < 1)
{
cell.CellStyle = redStyle;
}
else
{
cell.CellStyle = normalStyle;
}

(注意:我根本没有测试过这段代码。我忘记了 CreateCellStyle 是否那样工作。但它至少应该为您指明正确的方向。)

关于c# - NPOI 不会改变单元格的字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47267550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com