Персонализирайте цвета на фона на клетката на листа на Excel на отворен xml в asp.net

Искам да задам цвят на някои клетки с помощта на Asp.Net. Да предположим, че ако сумата на моята заплата е по-голяма от 20 000, цветът на тази конкретна клетка ще бъде червен, където заплата > 20 000 .друга клетка е също. Извличам пълните данни от базата данни и накрая експортирам данните в excel файл с помощта на closedXML dll. всички мои данни се съхраняват в excel файл, но изискването е напълно изпълнено.

Това е моят код за генериране на Excel (Във Vb.Net)

Public Sub GenerateExcel(ByVal DTExcel As DataTable, ByVal sFolder As String, ByVal email As String)
    Dim filepathemail As String = "", cntCol As Integer = 0, cntrow As Integer = 0, k As Integer = 0

    If DTExcel.Rows.Count > 0 Then
        ' string Sallary= ds.Tables[0].Rows[0]["Sallary"].ToString();

        Dim Excel As New XLWorkbook()

   If Sallary > 20000 Then
                //Here need to change the color of that cell (How to find cell)
  End if

        Dim worksheet = Excel.Worksheets.Add("Longcode SMS Log Report")
        worksheet.Cell(1, 1).InsertTable(DTExcel, True)

        worksheet.Tables.First().InsertRowsAbove(3)
        worksheet.Cell("A1").SetValue("Longcode SMS Log Report").Style.Font.FontName = "Calibri"
        worksheet.Cell("A1").Style.Font.Bold = True
        worksheet.Cell("A1").Style.Font.FontSize = 14
        worksheet.Range("A1:L1").Row(1).Merge()


        worksheet.Cell("A2").SetValue("Report Date : " & Format(ReportDate, "dd/MM/yyyy ")).Style.Font.FontName = "Calibri"
        worksheet.Cell("A2").Style.Font.Bold = True
        worksheet.Cell("A2").Style.Font.FontSize = 13
        worksheet.Range("A2:L2").Row(1).Merge()

        worksheet.Range("A3:L3").Row(1).Merge()

        Dim dttime As DateTime = DateTime.Now
        dttime = dttime.AddDays(-1)
        Dim hr As String = dttime.Hour
        Dim day As String = dttime.Day
        Dim mon As String = dttime.Month
        Dim yr As String = dttime.Year
        Dim dirPath As String = Application.StartupPath & "\Reports\" & sFolder
        If Not Directory.Exists(dirPath) Then
            Directory.CreateDirectory(dirPath)
        End If
        filepathemail = IO.Path.Combine(dirPath, "Longcode SMS Log Report_" & day & mon & yr & "_" + ".xlsx")
        Dim filepath As String = filepathemail
        Excel.SaveAs(filepath)

person Abhisek Das    schedule 11.03.2015    source източник


Отговори (1)


Това, което описвате, се нарича Условно форматиране в Excel и ClosedXml (вижте документацията на ClosedXml). Кодът изглежда по следния начин:

worksheet.Range("B2:B100").AddConditionalFormat()
    .WhenGreaterThan(20000).Fill.SetBackgroundColor(XLColor.Red);
person Raidri    schedule 12.03.2015