miércoles, 25 de abril de 2012

3 Formas Para Exportar DataTable A Excel En .Net

Forma 1:
Public Sub trycodenet_ExportExcel(ByVal table As DataTable, ByVal name As String)
Dim sb As New StringBuilder()
Dim sw As New IO.StringWriter(sb)
Dim htw As New HtmlTextWriter(sw)
Dim pagina As New Page()
Dim form As New HtmlForm()
Dim dg As New GridView()
dg.HeaderStyle.Font.Bold = True
dg.EnableViewState = False
dg.DataSource = table
dg.DataBind()
pagina.EnableEventValidation = False
pagina.DesignerInitialize()
pagina.Controls.Add(form)
form.Controls.Add(dg)
pagina.RenderControl(htw)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment;filename=" & name & ".xls")
Response.Charset = "UTF-8"
Response.ContentEncoding = Encoding.Default
Response.Write(sb.ToString())
Response.End()
End Sub



Forma 2:
Public Sub trycodenet_ExportExcel(ByVal table As DataTable, ByVal name As String)
Dim context As HttpContext = HttpContext.Current
Dim attachment As String = "attachment; filename=" & name & ".xls"
context.Response.ClearContent()
context.Response.AddHeader("content-disposition", attachment)
context.Response.ContentType = "application/vnd.ms-excel"
Dim tab As String = ""
For Each dc As DataColumn In table.Columns
context.Response.Write(tab + dc.ColumnName)
tab = vbTab
Next
context.Response.Write(vbLf)
For Each dr As DataRow In table.Rows
tab = ""
For i As Integer = 0 To table.Columns.Count - 1
context.Response.Write(tab + dr(i).ToString())
tab = vbTab
Next
context.Response.Write(vbLf)
Next
context.Response.End()
End Sub



Forma 3:
Public Sub trycodenet_ExportExcel(ByVal table As DataTable, ByVal name As String)
Dim context As HttpContext = HttpContext.Current
context.Response.Clear()
For Each column As DataColumn In table.Columns
context.Response.Write(column.ColumnName & ",")
Next
context.Response.Write(Environment.NewLine)
For Each row As DataRow In table.Rows
For i As Integer = 0 To table.Columns.Count - 1
context.Response.Write(row(i).ToString().Replace(",", String.Empty) & ",")
Next
context.Response.Write(Environment.NewLine)
Next
Response.ContentType = "application/vnd.ms-excel"
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" & name & ".xls")
context.Response.End()
End Sub