Hi farahlawi95,
Check this example. Now please take its reference and correct your code.
HTML
<asp:Button ID="btnExport" runat="server" Text="Export To Excel" OnClick="ExportExcel" />
Namespaces
C#
using System.Data;
using System.IO;
using ClosedXML.Excel;
VB.Net
Imports System.Data
Imports System.IO
Imports ClosedXML.Excel
Code
C#
protected void ExportExcel(object sender, EventArgs e)
{
DataTable dt = Data();
using (XLWorkbook wb = new XLWorkbook())
{
wb.Worksheets.Add(dt, "Data");
wb.Worksheet("Data").ColumnWidth = 30;
wb.Worksheet("Data").RowHeight = 20;
foreach (var row in wb.Worksheet("Data").RowsUsed())
{
foreach (var cell in row.CellsUsed())
{
if (cell.GetValue<string>().ToString().ToUpper() == "VALID")
{
// Changing color to Green.
cell.Style.Fill.BackgroundColor = XLColor.Green;
}
if (cell.GetValue<string>().ToString().ToUpper() == "NOTDONE")
{
// Changing color to Red.
cell.Style.Fill.BackgroundColor = XLColor.Red;
}
}
}
wb.Worksheet("Data").Columns().AdjustToContents();
wb.Worksheet("Data").Table("Table1").ShowAutoFilter = false;
wb.Worksheet("Data").Table("Table1").Theme = XLTableTheme.None;
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=Test.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
private DataTable Data()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
new DataColumn("Col1"),
new DataColumn("Col2"),
new DataColumn("Col3") });
dt.Rows.Add("VALID", "Java", "NOTDONE");
dt.Rows.Add("NOTDONE", "ASP.Net", "VALID");
dt.Rows.Add("0003", "SQL", "VALID");
dt.Rows.Add("NOTDONE", "jQuery", "NOTDONE");
return dt;
}
VB.Net
Protected Sub ExportExcel(ByVal sender As Object, ByVal e As EventArgs)
Dim dt As DataTable = Data()
Using wb As XLWorkbook = New XLWorkbook()
wb.Worksheets.Add(dt, "Data")
wb.Worksheet("Data").ColumnWidth = 30
wb.Worksheet("Data").RowHeight = 20
For Each row In wb.Worksheet("Data").RowsUsed()
For Each cell In row.CellsUsed()
' Changing color to Green.
If cell.GetValue(Of String)().ToString().ToUpper() = "VALID" Then
cell.Style.Fill.BackgroundColor = XLColor.Green
End If
' Changing color to Red.
If cell.GetValue(Of String)().ToString().ToUpper() = "NOTDONE" Then
cell.Style.Fill.BackgroundColor = XLColor.Red
End If
Next
Next
wb.Worksheet("Data").Columns().AdjustToContents()
wb.Worksheet("Data").Table("Table1").ShowAutoFilter = False
wb.Worksheet("Data").Table("Table1").Theme = XLTableTheme.None
Response.Clear()
Response.Buffer = True
Response.Charset = ""
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment;filename=Test.xlsx")
Using MyMemoryStream As MemoryStream = New MemoryStream()
wb.SaveAs(MyMemoryStream)
MyMemoryStream.WriteTo(Response.OutputStream)
Response.Flush()
Response.End()
End Using
End Using
End Sub
Private Function Data() As DataTable
Dim dt As DataTable = New DataTable()
dt.Columns.AddRange(New DataColumn() {
New DataColumn("Col1"),
New DataColumn("Col2"),
New DataColumn("Col3")})
dt.Rows.Add("VALID", "Java", "NOTDONE")
dt.Rows.Add("NOTDONE", "ASP.Net", "VALID")
dt.Rows.Add("0003", "SQL", "VALID")
dt.Rows.Add("NOTDONE", "jQuery", "NOTDONE")
Return dt
End Function
Screenshot