Export ASP.Net ListView to Excel using C# and VB.Net

Last Reply 2 months ago By pandeyism

Posted 2 months ago

hello,

i have listview i want to export the data to excel

in gridview i have mudassir sir code to export but for listview how to export to excel

<asp:ListView ID="ListView1" runat="server" OnItemDataBound="ListView1_ItemDataBound">
    <ItemTemplate>
        <tr>
            <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("UserName") %>' Visible="false"></asp:Label></td>
            <td><%# Eval("ProfileId") %></td>
            <td><%# Eval("FirstName") %>  <%# Eval("lastname") %></td>
            <td><%# Eval("phonenumber") %></td>
            <td><%# Eval("city") %></td>
            <td><%# Eval("state") %></td>
            <td><%# Eval("zip") %></td>
            <td><asp:Label ID="lblprofile" runat="server" Text="Label"></asp:Label></td>
            <td><asp:Label ID="lblresume" runat="server" Text="Label"></asp:Label></td>
            <td><asp:Label ID="lbldriver" runat="server" Text="Label"></asp:Label></td>
        </tr>
    </ItemTemplate>
</asp:ListView>                                              

 

Posted 2 months ago

Hi nauna,

Refer below sample.

HTML

<asp:ListView ID="ListView1" runat="server">
    <ItemTemplate>
        <table>
            <tr>
                <td>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("Id") %>'></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblprofile" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblresume" runat="server" Text='<%# Eval("Country") %>'></asp:Label>
                </td>
            </tr>
        </table>
    </ItemTemplate>
</asp:ListView>
<br />
<asp:Button ID="btnExport" runat="server" Text="Export To Excel" OnClick="ExportToExcel" />

Namespaces

C#

using System.Data;
using System.IO;

VB.Net

Imports System.Data
Imports System.IO

Code

C#

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        BindGrid();
    }
}

private void BindGrid()
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[] { new DataColumn("Id", typeof(int)), new DataColumn("Name", typeof(string)), new DataColumn("Country", typeof(string)) });
    dt.Rows.Add(1, "John Hammond", "United States");
    dt.Rows.Add(2, "Mudassar Khan", "India");
    dt.Rows.Add(3, "Suzanne Mathews", "France");
    dt.Rows.Add(4, "Robert Schidner", "Russia");
    ListView1.DataSource = dt;
    ListView1.DataBind();
}

protected void ExportToExcel(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    using (StringWriter sw = new StringWriter())
    {
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        this.BindGrid();
        ListView1.RenderControl(hw);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }
}

public override void VerifyRenderingInServerForm(Control control)
{
    /* Verifies that the control is rendered */
}

VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    If Not Me.IsPostBack Then
        BindGrid()
    End If
End Sub

Private Sub BindGrid()
    Dim dt As DataTable = New DataTable()
    dt.Columns.AddRange(New DataColumn() {New DataColumn("Id", GetType(Integer)), New DataColumn("Name", GetType(String)), New DataColumn("Country", GetType(String))})
    dt.Rows.Add(1, "John Hammond", "United States")
    dt.Rows.Add(2, "Mudassar Khan", "India")
    dt.Rows.Add(3, "Suzanne Mathews", "France")
    dt.Rows.Add(4, "Robert Schidner", "Russia")
    ListView1.DataSource = dt
    ListView1.DataBind()
End Sub

Protected Sub ExportToExcel(ByVal sender As Object, ByVal e As EventArgs)
    Response.Clear()
    Response.Buffer = True
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls")
    Response.Charset = ""
    Response.ContentType = "application/vnd.ms-excel"
    Using sw As StringWriter = New StringWriter()
        Dim hw As HtmlTextWriter = New HtmlTextWriter(sw)
        Me.BindGrid()
        ListView1.RenderControl(hw)
        Response.Output.Write(sw.ToString())
        Response.Flush()
        Response.End()
    End Using
End Sub

Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
End Sub

Screenshot