在C#中,如何根据某些条件将导出的Excel文件的背景色单元格设置为特定颜色



我使用以下引用将数据插入Excel。根据下面的代码,我想设置单元格颜色,其中也将包含一些数据(如分数(

using ClosedXML.Excel.XLWorkbook;
XLWorkbook workbook;
workbook = new XLWorkbook(System.Web.Hosting.HostingEnvironment.MapPath("~/Template.xlsx"));
var worksheet = workbook.Worksheets.Worksheet(1);
foreach(var item in output)
{
var cellname = ...... //  some codes to get cell name For exampple : it gets A5
worksheet.Cell(cellname).SetValue(item.Score);
// Now I need to set color for cell A5 (ie cellname) based on some condition
// item will also contain parameter Color which will have color name like below
if(item.Color == "Red")
worksheet.Cell(cellname).SetColor(Red);     // I need proper code to be written in this line
else if (item.Color == "Green")
worksheet.Cell(cellname).SetColor(Green);  //
// ............ some other codes .......
}

我使用的是ClosedXML,所以我需要能够使用此引用的代码。还有,项目。颜色是从DB收到的,所以它的值可以是红色、绿色或蓝色之间的任何一个,所以我需要检查项目。Color值,并相应地设置单元格颜色。

我想你能做的最好的事情就是在Excel文件本身中添加条件格式。这样,Excel将应用颜色,即使在生成文件后值发生变化时也会应用颜色。这在文件的这一部分进行了描述:

var workbook = new XLWorkbook();
var ws = workbook.AddWorksheet("Sheet1");
ws.FirstCell().SetValue(1)
.CellBelow().SetValue(1)
.CellBelow().SetValue(2)
.CellBelow().SetValue(3)
.CellBelow().SetValue(4);
ws.RangeUsed().AddConditionalFormat().WhenBetween(2, 3)
.Fill.SetBackgroundColor(XLColor.Red);

只需设置文本或填充颜色,同样,您可以查看填充颜色或字体的文档:

var workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("Style Fill");
var co = 2;
var ro = 1;
ws.Cell(++ro, co + 1).Value = "BackgroundColor = Red";
ws.Cell(ro, co).Style.Fill.BackgroundColor = XLColor.Red;
ws.Cell(++ro, co + 1).Value = "PatternType = DarkTrellis; PatternColor = Orange; PatternBackgroundColor = Blue";
ws.Cell(ro, co).Style.Fill.PatternType = XLFillPatternValues.DarkTrellis;
ws.Cell(ro, co).Style.Fill.PatternColor = XLColor.Orange;
ws.Cell(ro, co).Style.Fill.PatternBackgroundColor = XLColor.Blue;
workbook.SaveAs(Styles_Fill);

总的来说,这些文档看起来确实相当全面和有用。

最新更新