簡體   English   中英

在 C# 中,如何根據某些條件將導出的 Excel 文件的背景顏色單元格設置為特定顏色?

[英]In C#, how can I set the background color cell of exported Excel file to particular color based on some conditions?

我正在使用以下參考將數據插入 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 ,因此我需要與此參考一起使用的代碼。 此外,item.Color 是從 DB 接收的,因此它的值可以是紅色、綠色或藍色之間的任何值,因此我需要檢查 item.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);

一般來說,文檔看起來確實相當全面和有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM