ASP .NET - Exportando Excel para GridView e Salvando no SQL Server
Neste artigo vou mostrar como exportar dados de uma planilha Excel para uma página ASP .NET em um controle GridView e também como salvar os dados do GridView em um banco de dados SQL Server e gerar uma planilha Excel. |
O objetivo não é criar uma rotina genérica mas mostrar uma das maneiras de se realizar a exportação de dados do Excel para o GridView e como Salvar em um banco de dados SQL Server.
Eu estou usando o Visual Web Developer 2010 Express Edition mas podemos usar o Visual Studio 2010.
Inicie o VWD 2010 e no menu File - New Project selecione Visual Basic -> Web e a seguir escolha o template : ASP .NET Empty Web Application informando o nome ExportarExcel e clicando no botão OK;
No menu Project -> Add New Item selecione o template WebForm e informe o nome Default.aspx para nossa página ASP .NET.
A seguir vamos definir o seguinte leiaute na página:
O código do arquivo Default.aspx pode ser visto na guia Source e esta mostrado a seguir:
<%@ Page Language="vb"
AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="ExportarExcel._Default"
%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <script
language="javascript" type="text/javascript"> </head> |
Observe que temos um estilo definido no arquivo e também uma função JScript que irá criar o arquivo Excel e exportar os dados.
Neste script estamos usando o objeto ActiveXObject para criar um objeto de Automação Excel atribuindo o valor a variável objeto oExcel.
A planilha Excel NotasAlunos.xlsx da qual vamos exportar dados possui o seguinte formato e dados:
E com base na estrutura dessa planilha que vamos obter um sumários das notas dos alunos e criar a tabela temporária e a tabela no banco de dados Excel para salvar os dados e exportar novamente os dados para o Excel.
A estrutura da tabela Notas que irá receber os dados sumarizados possui a seguinte estrutura:
USE
[Agenda] GO CREATE TABLE [dbo].[Notas] ([codigo] [int] NULL,[nome] [nvarchar](50) NULL, [matricula] [nvarchar](50) NULL,[pontos] [nvarchar](50) NULL,[percentual] [nvarchar](50) NULL) ON [PRIMARY] Script para gerar a tabela no SQL Server.
|
Deveremos definir no arquivo Web.Config as strings de conexão com a planilha Excel e com o banco de dados SQL Server que estamos usando para salvar os dados.
A seguir vamos o arquivo Web.Config com cada string de conexão definida. Para o Excel temos duas versões: uma para o Excel 2003 e outra para o Excel 2007:
<?xml
version="1.0"?> <!-- <configuration> |
Executando a aplicação teremos a página principal:
Onde devemos selecionar a planilha NotasAlunos e enviá-la ao servidor:
Após isso os dados da planilha serão lidos e exportados para o controle GridView. Onde no primeiro apenas exibimos a planilha e no segundo efetuamos uma soma dos pontos de cada aluno e definindo um percentual:
Ao clicar no botão para salvar os dados e exportar para o Excel teremos primeiro os dados salvos na tabela Notas conforme podemos conferir abaixo:
O código completo do arquivo code-behind Default.aspx.vb pode ser visto a seguir:
Imports System.Data Imports System.Data.OleDb Imports System.Data.SqlClient Imports System.IO Imports System.Configuration Public Class _Default Inherits System.Web.UI.Page
Protected Sub
Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
conStr = [String].Format(conStr, FilePath, 1)
connExcel.Open()
'Le os dados da primeira planilha do Excel
' Cria arquivo temporário
' Cria linha de cabeçalho
Dim soma As Integer
Try
'Percentual(%)
'Vincula dados no GridView
Catch ex As Exception Protected Sub
PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs)
Handles gdvNotas.PageIndexChanging
ImportarParaGrid(FilePath, Extension)
Dim strTmpTime As String = (System.DateTime.Today).ToString()
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ' inclui dados da
planilha excel no banco de dados
For i = 0 To gdvNotas.Rows.Count - 1 |
No código acima temos as rotinas incluir_Dados() que exporta os dados do gridview para a tabela Notas e a rotina CriarPlanilhaExcel() que cria a planilha no Excel.
A rotina ImportarParaGrid() importa os dados da planilha Excel NotasALunos para o GridView e cria um resumo com a somatória dos pontos de cada aluno exportando para o outro gridview.
O projeto completo esta no Super DVD .NET e no Super CD .NET.
Eu sei é apenas ASP .NET mas eu gosto...
"Falou-lhes pois Jesus outra vez, dizendo: Eu sou a luz do mundo; quem me segue não andará em trevas, mas terá a luz da vida." (João 8:12)
Referências:
http://msdn.microsoft.com/en-us/library/7sw4ddf8(v=vs.85).aspx
Exportando o conteúdo de um GridView para o Excel - Macoratti.net
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#