VB .NET - Exportando dados para o Excel com ADO
Se você é um desenvolvedor VBA já deve saber que uma das formas de exportar dados para o Excel é usar os recursos da ADO referenciando a biblioteca Microsoft ActiveX Data Object e usando o recurso CopyFromRecordset.
Se você for um desenvolvedor .NET que usa VB .NET ou C# e precisa exportar dados para o Excel provavelmente você vai usar ADO .NET ou LINQ. Vai funcionar com certeza mas você ainda pode continuar usando o recurso ADO que em muitos casos tem se mostrado mais rápido.
Então neste artigo eu mostro como exportar dados usando os recursos da ADO com o VB .NET.
Você vai precisar ter instalado o Visual Basic 2010 Express Edition e o Excel 2007 (creio que com a versão 2003 também funcione).
Abra o Visual Basic 2010 Express Edition e crie um novo projeto do tipo Windows Forms Application com o nome Exportar_Excel;
No formulário padrão form1.vb inclua um botão de comando (btnExportar) com o texto Exportar Dados;
Abaixo temos o leiaute do formulário (as imagens usadas foram só uma perfumaria e são opcionais):
Se você quiser exibir as
imagens como na figura deverá definir as seguintes
propriedades: Formulário form1.vb:
Controle Button :
|
Agora vamos importar as referências as bibliotecas ADO e Excel:
No menu Project clique Add Reference e na janela Add Reference selecione a guia COM e marque o item: Microsoft ActiveX Data Objects xx.xx Library (xx.xx é a versão)
Repita o procedimento acima e na mesma janela e guia selecione o item: Microsoft Excel 12.0 Object Library (A versão 12.0 indica o Excel 2007)
Agora já temos as referências no projeto e podemos definir as declarações no início do formulário form1.vb:
Imports
ADODB
Imports System.Text
Imports excel = Microsoft.Office.Interop.Excel
Para concluir defina no evento Click do botão de comando o código conforme abaixo:
Private Sub btnExportar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExportar.Click Try 'define a string de conexão Const stcon As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\dados\NorthWind.accdb" 'defina a instrução SQL para selecionar os dados da tabela Const stsql As String = "SELECT * FROM Customers" 'define os objetos connection, recordset e Field Dim cnt As New ADODB.Connection Dim rst As New ADODB.Recordset Dim fld As ADODB.Field 'Abre a conexão com o banco de dados cnt.Open(stcon) 'Abre o recordset With rst .CursorLocation = CursorLocationEnum.adUseClient .Open(stsql, cnt, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, ADODB.CommandTypeEnum.adCmdText) .ActiveConnection = Nothing End With 'Fecha a conexão com o banco de dados cnt.Close() 'Define variáveis para o Excel: Application(Excel),WorkBook(pasta de trabalho),WorkSheet(Planilha) 'Range(intervalo de células) Dim xlapp As New excel.Application Dim xlwbook As excel.Workbook = xlapp.Workbooks.Add(excel.XlWBATemplate.xlWBATWorksheet) Dim xlwsheet As excel.Worksheet = CType(xlwbook.Worksheets(1), excel.Worksheet) Dim xlrange As excel.Range = xlwsheet.Range("A2") 'define modo de cálculo : xlCalculationAutomatic , xlCalculationManual, xlCalculationSemiautomatic Dim xlcalc As excel.XlCalculation 'Desabilita temporariamente o calculo automatico passando para manual With xlapp xlcalc = .Calculation .Calculation = excel.XlCalculation.xlCalculationManual End With Dim contadorCampos As Integer = Nothing 'Escreve os nomes dos campos na planilha For Each fld In rst.Fields xlrange.Offset(0, contadorCampos).Value = fld.Name contadorCampos = contadorCampos + 1 Next 'Copia o recordset para a planilha xlrange.Offset(1, 0).CopyFromRecordset(rst) 'Fecha o recordset. rst.Close() With xlapp .Visible = True .UserControl = True 'Restaura o calculo .Calculation = xlcalc End With 'libera os objetos fld = Nothing rst = Nothing cnt = Nothing xlrange = Nothing xlwsheet = Nothing xlwbook = Nothing xlapp = Nothing Catch ex As Exception MessageBox.Show("Ocorreu um erro : " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub |
Executando o projeto e acionando o botão para exportar os dados iremos obter:
Fácil, simples e muito rápido...
Pegue o projeto completo aqui: Exportar_Excel.zip
1Pe 1:17
E, se invocais por Pai aquele que, sem acepção de pessoas, julga segundo a obra de cada um, andai em temor durante o tempo da vossa peregrinação,1Pe 1:18
sabendo que não foi com coisas corruptíveis, como prata ou ouro, que fostes resgatados da vossa vã maneira de viver, que por tradição recebestes dos vossos pais,1Pe 1:19
mas com precioso sangue, como de um cordeiro sem defeito e sem mancha, o sangue de Cristo,1Pe 1:20
o qual, na verdade, foi conhecido ainda antes da fundação do mundo, mas manifesto no fim dos tempos por amor de vós,1Pe 1:21
que por ele credes em Deus, que o ressuscitou dentre os mortos e lhe deu glória, de modo que a vossa fé e esperança estivessem em Deus.Referências: