Desenvolvimento - Visual Basic .NET

Gerando Planilha a partir de uma tabela Sql Server e VB.NET

Neste artigo iremos aprender a gerar uma planilha do Excel a partir de dados do SqlServer e Visual Studio 2005/ VB.Net.

por Marcelo Bicalho



Para a proposta de geração iremos seguir os passos abaixo:

1º Passo: Crie a tabela conforme o código abaixo. Após a criação insira registros na mesma.

Create table Funcionarios(

FuncCodigo                 int not null,

FuncNome                   Varchar(50),

FuncDataNascimento    datetime,

FuncSalario                  Decimal(18,2))

2º Passo: Definições do Projeto.

            - Crie um projeto do tipo Windows Application com VB.NET.

            - Adicione uma referência conforme a Ilustração 1 e Ilustração 2.

Ilustração 1

Ilustração 2

3º Passo: Codificação.

            - Insira antes da declaração da classe de formulário as linhas:

           

Imports System.Data

Imports System.Data.SqlClient

- Insira um botão no formulário e para o mesmo insira o código abaixo:

       "Recuperação de dados do Banco de Dados ---------------------------------------------------------------

        Dim conn As New SqlConnection("Server=MARCELO\SQLEXPRESS; uid=sa; pwd=123456")

        conn.Open()

        Dim ds As DataSet

        Dim dt As DataTable

        Dim da As SqlDataAdapter

        Dim cmd As SqlCommand

        cmd = New SqlCommand()

        cmd.CommandType = CommandType.Text

        cmd.Connection = conn

        cmd.CommandText = "SELECT * FROM Funcionarios"

        da = New SqlDataAdapter(cmd)

        ds = New DataSet()

        da.Fill(ds)

        dt = ds.Tables(0)

        cmd.Dispose()

        da.Dispose()

        conn.Dispose()

        "Criação do arquivo em Excel --------------------------------------------------------------------------

        Dim objExcel As Microsoft.Office.Interop.Excel.Application

        Dim Pasta1 As Microsoft.Office.Interop.Excel.Workbook

        Dim Plan1 As Microsoft.Office.Interop.Excel.Worksheet

        "Define uma aplicação em Excel

        objExcel = New Microsoft.Office.Interop.Excel.Application()

        "Define uma (Pasta) (Arquivo de planilhas)

        Pasta1 = objExcel.Workbooks.Add()

        "Define uma planilha

        Plan1 = objExcel.Worksheets.Add()

        Plan1.Name = "Consulta de Documento"

        Plan1.Activate()

        Dim i As Integer

        Dim linha As Integer = 4

        "Definindo Títulos

        objExcel.ActiveSheet.Range("A1:D1").merge()

        objExcel.ActiveSheet.Cells(1, 1).Font.Bold = True

        objExcel.ActiveSheet.Cells(1, 1).Value = "Gerando Planilha com VB.NET"

        objExcel.ActiveSheet.cells(1, 1).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter

        objExcel.ActiveSheet.Cells(3, 1).Value = "Código"

        objExcel.ActiveSheet.Cells(3, 2).Value = "Nome"

        objExcel.ActiveSheet.Cells(3, 3).Value = "Data Nascimento"

        objExcel.ActiveSheet.Cells(3, 4).Value = "Salário"

        "Preenchendo Células

        For i = 0 To dt.Rows.Count - 1

            linha += 1

            objExcel.ActiveSheet.Cells(linha, 1).Value = dt.Rows(0).Item("FuncCodigo")

            objExcel.ActiveSheet.Cells(linha, 2).Value = dt.Rows(0).Item("FuncNome")

            objExcel.ActiveSheet.Cells(linha, 3).Value = dt.Rows(0).Item("FuncDataNascimento")

            objExcel.ActiveSheet.Cells(linha, 4).Value = dt.Rows(0).Item("FuncSalario")

            objExcel.ActiveSheet.Cells(linha, 1).NumberFormat = "00000"

            objExcel.ActiveSheet.Cells(linha, 4).NumberFormat = "###.###.##0,00"

        Next

        "Formatando Colunas

        objExcel.ActiveSheet.Columns(1).EntireColumn.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter

        objExcel.ActiveSheet.Columns(2).EntireColumn.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft

        objExcel.ActiveSheet.Columns(3).EntireColumn.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter

        objExcel.ActiveSheet.Columns(4).EntireColumn.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight

        For x As Integer = 1 To 4

            objExcel.ActiveSheet.Cells(3, x).Font.Bold = True

            objExcel.ActiveSheet.Columns(x).EntireColumn.AutoFit()

        Next

        "Desenhando Bordas

        objExcel.ActiveCell.Cells(1, 1).Borders.LineStyle = Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft

        objExcel.ActiveCell.Cells(1, 2).Borders.LineStyle = Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft

        objExcel.ActiveCell.Cells(1, 3).Borders.LineStyle = Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft

        objExcel.ActiveCell.Cells(1, 4).Borders.LineStyle = Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft

        For y As Integer = 3 To linha

            For z As Integer = 1 To 4

                objExcel.ActiveCell.Cells(y, z).Borders.LineStyle = Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft

                objExcel.ActiveCell.Cells(1, 1).Borders.LineStyle = Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft

            Next

        Next

        "Tipo e Tamanho de Fonte

        With objExcel.ActiveSheet.Cells.Font

            .Name = "Arial"

            .Size = 10

        End With

        objExcel.Application.Visible = True

        objExcel = Nothing

        Pasta1 = Nothing

        Plan1 = Nothing

Marcelo Bicalho

Marcelo Bicalho - Possui graduação Tecnologia em Processamento de Dados e Pós-graduação em Engenharia de Software pela Universidade Norte do Paraná. Atualmente é Analista/Programador de sistemas - OnixSat Rastreamento de Veículos e docente da Universidade Norte do Paraná. Tem experiência na área de Computação com ênfase em Engenharia de Software e Docência em Computação. Trabalha desde 2005 com tecnologia .net (VB.NET, C#, SQLServer).