Export Datagridview ke Excel ASP ( VB.net )


Sebuah aplikasi yang berhubungan dengan database biasanya melampirkan sebuah tombol untuk export ke file excel yang nantinya berguna saat user ingin mendownload file tersebut untuk dikirim keatasan ataupun sebagai hardcopy

Berikut merupakan cara melakukan export Datagridview ke excel.


BAGIAN HTML


bagian html ini merupakan content form dimana telah tersedia master form. bila belum memiliki master form anda perlu membuat masterform terlebih dahulu.




1:  <%@ Page Language="vb" AutoEventWireup="false" MasterPageFile="~/Site1.Master" CodeBehind="export_excel.aspx.vb" Inherits="testapp.export_excel"  
2:    title="Untitled Page" ValidateRequest="false" EnableEventValidation="false" %>  
3:  <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">  
4:  </asp:Content>  
5:  <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">  
6:  <h3>Export data Gridview ke Excel</h3>  
7:  <asp:Button ID="btn_export" runat="server" Text="export" />  
8:    <asp:Image ID="Image1" runat="server" />  
9:   <asp:GridView ID="grd_data" runat="server" AutoGenerateColumns="False"   
10:           AllowPaging="True" PageSize="20" CellPadding="4"  
11:      ForeColor="#333333" GridLines="None" OnPageIndexChanging="OnPageIndexChanging">  
12:         <RowStyle HorizontalAlign="Center" BackColor="#F7F6F3" ForeColor="#333333" />  
13:         <Columns>  
14:  <asp:BoundField DataField="nama_field" HeaderText="judul_field"  />  
15:  <asp:BoundField DataField="nama_field" HeaderText="judul_field"  />  
16:  <asp:BoundField DataField="nama_field" HeaderText="judul_field"  />  
17:  <asp:BoundField DataField="nama_field" HeaderText="judul_field"  />  
18:  <asp:BoundField DataField="nama_field" HeaderText="judul_field"  />  
19:  <asp:BoundField DataField="nama_field" HeaderText="judul_field"  />  
20:  <asp:BoundField DataField="nama_field" HeaderText="judul_field"  />  
21:         </Columns>  
22:         <PagerSettings LastPageText=" Last Page" FirstPageText=" First Page" />  
23:         <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />  
24:         <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />  
25:         <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />  
26:         <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />  
27:         <EditRowStyle BackColor="#999999" />  
28:         <AlternatingRowStyle BackColor="White" ForeColor="#284775" />  
29:       </asp:GridView><br />  
30:       <asp:SqlDataSource ID="sdsdaftar" runat="server" ConnectionString="<%$ ConnectionStrings:BackboneConnectionString %>"  
31:      ></asp:SqlDataSource>  
32:  </asp:Content>  


NAMESPACES

berikut name spaces yang perlu di import ke aplikasi vb anda

Imports System.IO
Imports System.Drawing
Imports System.Data.SqlClient

SCRIPT EXPORT EXCEL

1. Script mengisi data pada gridview



1:  Private Sub BindGrid()  
2:      Dim strConnString As String = ConfigurationManager.ConnectionStrings("BackboneConnectionString").ConnectionString  
3:      Dim where As String = ""  
4:      Using con As New SqlConnection(strConnString)  
5:        Using cmd As New SqlCommand("select * from nama_table")  
6:          Using sda As New SqlDataAdapter()  
7:            cmd.Connection = con  
8:            sda.SelectCommand = cmd  
9:            Using dt As New DataTable()  
10:              sda.Fill(dt)  
11:              grd_data.DataSource = dt  
12:              grd_data.DataBind()  
13:            End Using  
14:          End Using  
15:        End Using  
16:      End Using  
17:    End Sub  



2. Meload data saat page load


1:   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load  
2:      BindGrid()  
3:    End Sub  


3. Script mengubah page index pada gridview dan overload


1:    Protected Sub OnPageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)  
2:      grd_data.PageIndex = e.NewPageIndex  
3:      Me.BindGrid()  
4:    End Sub  
5:    Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)  
6:    End Sub  

4. Script mengexport ke exel saat user menekan tombol btn_export


1:   Dim namafile As String  
2:      namafile = "exportke_excel" + DateTime.Now.ToString("dd/MM/yyyy") + ".xls"  
3:      If grd_data.Rows.Count > 0 Then  
4:        Response.Clear()  
5:        Response.Buffer = True  
6:        Response.AddHeader("content-disposition", "attachment;filename=" + namafile)  
7:        Response.Charset = ""  
8:        Response.ContentType = "application/vnd.ms-excel"  
9:        Using sw As New StringWriter()  
10:          Dim hw As New HtmlTextWriter(sw)  
11:          'To Export all pages  
12:          grd_data.AllowPaging = False  
13:          Me.BindGrid()  
14:          grd_data.HeaderRow.BackColor = Color.White  
15:          For Each cell As TableCell In grd_data.HeaderRow.Cells  
16:            cell.BackColor = grd_data.HeaderStyle.BackColor  
17:          Next  
18:          For Each row As GridViewRow In grd_data.Rows  
19:            row.BackColor = Color.White  
20:            For Each cell As TableCell In row.Cells  
21:              If row.RowIndex Mod 2 = 0 Then  
22:                cell.BackColor = grd_data.AlternatingRowStyle.BackColor  
23:              Else  
24:                cell.BackColor = grd_data.RowStyle.BackColor  
25:              End If  
26:              cell.CssClass = "textmode"  
27:            Next  
28:          Next  
29:          grd_data.RenderControl(hw)  
30:          'style to format numbers to string  
31:          Dim style As String = "<style> .textmode { } </style>"  
32:          Response.Write(style)  
33:          Response.Output.Write(sw.ToString())  
34:          Response.Flush()  
35:          Response.[End]()  
36:        End Using  
37:      End If  
38:    End Sub  

5. Complete script .vb



1:  Imports System.IO  
2:  Imports System.Drawing  
3:  Imports System.Data.SqlClient  
4:  Partial Public Class export_excel  
5:    Inherits System.Web.UI.Page  
6:    Protected Sub OnPageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)  
7:      grd_data.PageIndex = e.NewPageIndex  
8:      Me.BindGrid()  
9:    End Sub  
10:    Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)  
11:    End Sub  
12:    Private Sub BindGrid()  
13:      Dim strConnString As String = ConfigurationManager.ConnectionStrings("BackboneConnectionString").ConnectionString  
14:      Dim where As String = ""  
15:      Using con As New SqlConnection(strConnString)  
16:        Using cmd As New SqlCommand("select * from ihelp_tiket")  
17:          Using sda As New SqlDataAdapter()  
18:            cmd.Connection = con  
19:            sda.SelectCommand = cmd  
20:            Using dt As New DataTable()  
21:              sda.Fill(dt)  
22:              grd_data.DataSource = dt  
23:              grd_data.DataBind()  
24:            End Using  
25:          End Using  
26:        End Using  
27:      End Using  
28:    End Sub  
29:    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load  
30:      BindGrid()  
31:    End Sub  
32:    Protected Sub btn_export_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_export.Click  
33:      Dim namafile As String  
34:      namafile = "exportke_excel" + DateTime.Now.ToString("dd/MM/yyyy") + ".xls"  
35:      If grd_data.Rows.Count > 0 Then  
36:        Response.Clear()  
37:        Response.Buffer = True  
38:        Response.AddHeader("content-disposition", "attachment;filename=" + namafile)  
39:        Response.Charset = ""  
40:        Response.ContentType = "application/vnd.ms-excel"  
41:        Using sw As New StringWriter()  
42:          Dim hw As New HtmlTextWriter(sw)  
43:          'To Export all pages  
44:          grd_data.AllowPaging = False  
45:          Me.BindGrid()  
46:          grd_data.HeaderRow.BackColor = Color.White  
47:          For Each cell As TableCell In grd_data.HeaderRow.Cells  
48:            cell.BackColor = grd_data.HeaderStyle.BackColor  
49:          Next  
50:          For Each row As GridViewRow In grd_data.Rows  
51:            row.BackColor = Color.White  
52:            For Each cell As TableCell In row.Cells  
53:              If row.RowIndex Mod 2 = 0 Then  
54:                cell.BackColor = grd_data.AlternatingRowStyle.BackColor  
55:              Else  
56:                cell.BackColor = grd_data.RowStyle.BackColor  
57:              End If  
58:              cell.CssClass = "textmode"  
59:            Next  
60:          Next  
61:          grd_data.RenderControl(hw)  
62:          'style to format numbers to string  
63:          Dim style As String = "<style> .textmode { } </style>"  
64:          Response.Write(style)  
65:          Response.Output.Write(sw.ToString())  
66:          Response.Flush()  
67:          Response.[End]()  
68:        End Using  
69:      End If  
70:    End Sub  
71:  End Class  

Load comments