ASP.NET - Lendo planilhas do Excel
Podemos facilmente ler dados de planilhas do Excel e exibí-las em páginas na Web. Como ?? Com ASP.NET é claro. Veja como é simples...
Suponha que você tenha uma planilha Excel chamada teste.xls no diretório c:\teste com os seguintes dados:
Você quer exibir os dados da planilha em uma página na internet e quer também exibir dados com filtro pelo estado do cliente. ? E então ??
Para resolver este problema a primeira coisa a fazer é um ajuste na tabela Excel. Calma , nada complicado. Você deve apenas selecionar os dados que deseja exibir ( lembrando que a primeira linha será tomado como o cabeçalho da tabela) e usar a propriedade Range para dar um nome ao conjunto de células selecionada. Este nome será tomado como nome da nossa 'tabela' de dados. Você então usa um provedor OLE DB e faz o acesso aos dados normalmente. Simples !! não é mesmo ???
Selecione as células da planilha teste.xls e no menu Inserir do Excel selecione Nome e a seguir Definir:(ver figura abaixo)
Informe o nome para a seleção. Vou usar o nome Agenda. Este nome será a nossa ´tabela'.
Pronto ! Agora é só criar uma página asp.net chamada Excel.aspx e nela definir dois controles datagrid e dois controles labels para exibir os dados da planilha. Os controles usados são:
O código é o seguinte :
<html> <head> </head> <body> <form id="Form1" method="post" runat="server"> <asp:Label ID="lblSql1" Runat="server" />
<asp:DataGrid ID="dtgAgenda1" Runat="server"
HeaderStyle-BackColor="Red" HeaderStyle-ForeColor="White" HeaderStyle-Font-Name="Verdana" HeaderStyle-Font-Size="10" ItemStyle-BackColor="Cyan" ItemStyle-Font-Name="Verdana" ItemStyle-Font-Size="10" CellPadding="4" GridLines="Both" /> <p></p> <asp:Label ID="lblSql2" Runat="server" />
<asp:DataGrid ID="dtgAgenda2" Runat="server"
HeaderStyle-BackColor="Red" HeaderStyle-ForeColor="White" HeaderStyle-Font-Name="Verdana" HeaderStyle-Font-Size="10" ItemStyle-BackColor="Cyan" ItemStyle-Font-Name="Verdana" ItemStyle-Font-Size="10" CellPadding="4" GridLines="Both" /> </form> </body> </html>
|
A seguir e só fazer o acesso a 'tabela' Agenda que representa o conjunto de células da planilha teste.xls ; usando instruções SQL , basta selecionar os dados que queremos exibir. Veja o código para isso:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<html> <head> <script language="VB" runat="server"> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim strConn As String = "Provider=Microsoft.Jet.OleDb.4.0;" _ & "data source=c:\teste\teste.xls;" _ & "Extended Properties=Excel 8.0;" 'Primeiro DataGrid - vou exibir todos os dados da planilha Dim objConn As New OleDbConnection(strConn) Dim strSql As String = "Select Nome, Endereco, Cidade, Cep , UF From Agenda" lblSql1.Text = strSql Dim objCmd As New OleDbCommand(strSql, objConn) Try 'abre a conexão com a fonte de dados e executa a consulta SQL para retornar os dados e vinculando-os ao datagrid1 objConn.Open() dtgAgenda1.DataSource = objCmd.ExecuteReader() dtgAgenda1.DataBind() Catch exc As Exception Response.Write(exc.ToString()) Finally objConn.Dispose() End Try 'Segundo DataGrid - vou exibir os dados filtrados por UF objConn = New OleDbConnection(strConn) strSql = "Select * From Agenda Where UF='SP'" lblSql2.Text = strSql objCmd = New OleDbCommand(strSql, objConn) Try 'abre a conexão com a fonte de dados e executa a consulta SQL para retornar os dados e vinculando-os ao datagrid2 objConn.Open() dtgAgenda2.DataSource = objCmd.ExecuteReader() dtgAgenda2.DataBind() Catch exc As Exception Response.Write(exc.ToString()) Finally objConn.Dispose() End Try End Sub </script> |
A linha de código que faz o acesso a 'tabela' que representa a planilha Excel é :
Dim strConn As String = "Provider=Microsoft.Jet.OleDb.4.0;" _
& "data source=c:\teste\teste.xls;" _
& "Extended Properties=Excel 8.0;"
Perceba que estamos usando um provedor OLE DB e informando como fonte de dados (Data source) o caminho e o nome da planilha : teste.xls.
Rodando o projeto na máquina local ( com IIS configurado) temos:
Voilá ! Dados de uma planilha Excel em páginas Web sem complicação !!!
Pegue o código do arquivo Excel.aspx
Até mais ver...
José Carlos Macoratti