Hi y.alim,
I have created sample please take its reference.
I have used below article to generate the Excel. Refer below article for details.
HTML
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Name</td>
<td><asp:TextBox ID="txtName" runat="server" /></td>
</tr>
<tr>
<td>Age</td>
<td><asp:TextBox ID="txtAge" runat="server" /></td>
</tr>
<tr>
<td>Gender</td>
<td><asp:TextBox ID="txtGender" runat="server" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button ID="btnAdd" Text="Add Details" runat="server" OnClick="AddDetails" /></td>
</tr>
</table>
<br /><br />
<asp:Button ID="btnExport" Text="Export to Excel" runat="server" OnClick="ExportToExcel" />
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 Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(string));
dt.Columns.Add("Gender", typeof(string));
ViewState["Customers"] = dt;
}
}
protected void AddDetails(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["Customers"];
dt.Rows.Add(txtName.Text.Trim(), txtAge.Text.Trim(), txtGender.Text.Trim());
ViewState["Customers"] = dt;
txtName.Text = ""; txtAge.Text = ""; txtGender.Text = "";
}
protected void ExportToExcel(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["Customers"];
using (XLWorkbook wb = new XLWorkbook())
{
wb.Worksheets.Add(dt, "Customers");
wb.Worksheet(1).Columns().AdjustToContents();
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=Customers.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim dt As DataTable = New DataTable()
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Age", GetType(String))
dt.Columns.Add("Gender", GetType(String))
ViewState("Customers") = dt
End If
End Sub
Protected Sub AddDetails(ByVal sender As Object, ByVal e As EventArgs)
Dim dt As DataTable = CType(ViewState("Customers"), DataTable)
dt.Rows.Add(txtName.Text.Trim(), txtAge.Text.Trim(), txtGender.Text.Trim())
ViewState("Customers") = dt
txtName.Text = ""
txtAge.Text = ""
txtGender.Text = ""
End Sub
Protected Sub ExportToExcel(ByVal sender As Object, ByVal e As EventArgs)
Dim dt As DataTable = CType(ViewState("Customers"), DataTable)
Using wb As XLWorkbook = New XLWorkbook()
wb.Worksheets.Add(dt, "Customers")
wb.Worksheet(1).Columns().AdjustToContents()
Response.Clear()
Response.Buffer = True
Response.Charset = ""
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment;filename=Customers.xlsx")
Using MyMemoryStream As MemoryStream = New MemoryStream()
wb.SaveAs(MyMemoryStream)
MyMemoryStream.WriteTo(Response.OutputStream)
Response.Flush()
Response.End()
End Using
End Using
End Sub
Screenshots

Exported Excel
