ASP .NET - Exportando um GridView para um arquivo Texto (VB.NET)


Neste artigo vou mostrar como podemos exportar um GridView para um arquivo texto em uma aplicação ASP .NET Web Forms usando a linguagem VB .NET.

O GridView exibe os valores de uma fonte de dados em uma tabela onde cada coluna representa um campo e cada linha representa um registro.

O Controlador GridView permite a você selecionar, classificar e editar esses itens e também realizar a paginação de dados.

Todos esses recursos tornam o GridView um dos controles mais usados para exibir dados em aplicações ASP .NET Web Forms.

E se você precisar exportar os dados do GridView para o formato texto ?

Se não sabe como fazer isso então acompanhe o artigo e veja como é  simples.

No exemplo eu vou fazer uma conexão com o banco de dados Northwind.mdf do SQL Server e acessar dados da tabela Customers para exibir no GridView.

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando a solução no VS Community

Abra o VS Community 2015 e clique em New Project;

Selecione a linguagem Visual Basic -> Web  e o template ASP .NET Web Application;

Informe o nome AspNet_ExportaGridView_Texto e clique no botão OK;

A seguir escolha o template Empty e marque a opção Web Forms, sem autenticação nem hospedagem na nuvem:

Incluindo um novo Web Form no projeto e definindo a interface com o usuário

No menu Project clique em Add New Item;

Selecione o item Web Form e informe o nome Default.aspx.

Abra o arquivo Default.aspx e a partir da ToolBox inclua os seguintes controles no Web Form:

O leiaute deverá ficar conforme mostra a figura abaixo e o código gerado é mostrado ao lado :

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="AspNet_ExportaGridView_Texto._Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Exporta GridView para Texto</title>
</head>
<body>
    <form id="form1" runat="server">
        <h2>Macoratti .net</h2>
        <hr />
    <div>
        <asp:GridView ID="gdvDados" runat="server" Height="257px" Width="452px"></asp:GridView>
        <asp:Button ID="btnExportar" runat="server" Text="Exportar GridView" />
    </div>
    </form>
</body>
</html>

Implementando o Code-Behind no arquivo Default.aspx.vb

Vamos abrir o arquivo Default.aspx.vb e iniciar a implementação do código que vai popular o GridView e depois exportar o seu conteúdo.

Defina no início do arquivo os seguintes namespaces:

Imports System.Data.SqlClient
Imports System.IO

A seguir no início da página declare as variáveis que definem a string de conexão e a instrução SQL que vamos usar :

Private ConnectionString As String = "Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True"
Dim sql As String = "Select * from Customers"

Acessando a tabela Customers e exibindo dados no GridView

No evento Load da página Default.aspx vamos incluir o código que acessa a tabela Customers e seleciona os dados exibindo-os no GridView:

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Dim cn As SqlConnection = Nothing
            Dim ds As New DataSet
            Try
                cn = New SqlConnection(ConnectionString)
                cn.Open()
                Dim ad As New SqlDataAdapter(sql, cn)
                ad.Fill(ds)
                gdvDados.DataSource = ds.Tables(0)
                gdvDados.DataBind()
            Catch ex As Exception
                Throw ex
            Finally
                cn.Close()
            End Try
        End If
    End Sub

Definindo o código para exportar os dados do GridView para texto

A seguir no evento Click do botão de comando - Exportar GridView - inclua o código que vai exportar os dados:

 Protected Sub btnExportar_Click(sender As Object, e As EventArgs) Handles btnExportar.Click
        Dim str As New StringBuilder()
        Dim cn As New SqlConnection(ConnectionString)
        Dim ds As New DataSet()
        Try
            cn.Open()
            Dim ad As New SqlDataAdapter(sql, cn)
            ad.Fill(ds)
            Dim i As Integer
            For i = 0 To ds.Tables(0).Rows.Count - 1
                Dim j As Integer

                For j = 0 To ds.Tables(0).Columns.Count - 1
                    str.Append(ds.Tables(0).Rows(i)(j).ToString())
                    str.Append(",")
                Next j
                str.Append("<br/>")
            Next i
            Response.Clear()
            Response.AddHeader("content-disposition", "attachment;filename=ArquivoExportado.txt")
            Response.Charset = ""
            Response.Cache.SetCacheability(HttpCacheability.NoCache)
            Response.ContentType = "application/vnd.text"
            Dim stringWrite As New StringWriter()
            Dim htmlWrite = New HtmlTextWriter(stringWrite)
            Response.Write(str.ToString())
            Response.End()
        Catch ex As Exception
            Throw ex
        Finally
            cn.Close()
            cn.Dispose()
        End Try
    End Sub

Executando o projeto iremos obter o seguinte resultado após clicar no botão para exportar:

Ao clicar no botão de comando os dados do gridview são montados em um stringBuilder e exportados para um arquivo nomeado como ArquivoExportado.txt.

A janela Abrir com as opções para abrir ou fazer o download do mesmo é apresentada ao usuário.

Você pode decidir como formatar a saída gerada e pode também tratar o encoding do arquivo.

Pegue o projeto completo aqui: AspNet_ExportaGridView_Texto.zip

Até o próximo artigo...

Deitar-me faz em verdes pastos, guia-me mansamente a águas tranqüilas.Refrigera a minha alma; guia-me pelas veredas da justiça, por amor do seu nome.
Salmos 23:2,3

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti