Ir para o conteúdo do rodapé
USANDO O IRONXL

Como escrever em um arquivo do Excel em VB.NET (O jeito fácil)

Usar o Office Interop tem sido tradicionalmente a opção de fato para automação de tarefas do Microsoft Excel, mas isso vem com desvantagens significativas - problemas de desempenho, complicações no lado servidor e a exigência de que o Microsoft Excel esteja instalado na máquina.

Este guia demonstra uma abordagem moderna e mais eficiente de como você pode criar e escrever em um arquivo Excel em VB.NET. Vamos usar IronXL for .NET, uma biblioteca construída especificamente para ajudar desenvolvedores a criar, ler e editar planilhas do Excel sem depender do Office Interop. Você verá como lidar com tarefas comuns como criar novos arquivos, escrever dados a partir de coleções e modificar documentos existentes com apenas algumas linhas de código intuitivo.

Como posso começar com a automação do Excel em VB.NET?

Para começar a escrever em arquivos Excel em seu projeto VB.NET, você primeiro precisa adicionar a biblioteca IronXL. O processo é simples e pode ser feito diretamente no Visual Studio.

Primeiro, assegure-se de que seu ambiente de desenvolvimento está pronto:

  • Visual Studio 2022 ou mais recente.
  • Um projeto ativo direcionado para .NET Framework 4.6.2 ou superior, ou .NET Core/.NET 5+. IronXL é compatível com todas as versões modernas do .NET, incluindo .NET 9 e 10.

Em seguida, instale o pacote NuGet do IronXL:

  1. Abra o Gerenciador de Pacotes NuGet no Visual Studio.
  2. Procure o pacote IronXl.Excel.
  3. Clique em "Instalar".

Alternativamente, você pode instalá-lo via o Console do Gerenciador de Pacotes com o seguinte comando:

Install-Package IronXl.Excel

Navegue até o Gerenciador de Pacotes NuGet Navegando no menu do Visual Studio para o Gerenciador de Pacotes NuGet para encontrar o pacote certo para a integração do Excel em VB.NET.

Uma vez instalado, você está pronto para começar a escrever código. Basta adicionar Imports IronXL no topo do seu arquivo VB.NET para trazer as classes da biblioteca para o escopo.

Procure o pacote IronXL na interface do Gerenciador de Pacotes NuGet Pesquisando pelo pacote IronXL para instalar a biblioteca necessária para escrever dados em um arquivo Excel usando VB.NET.

Como posso criar um novo arquivo Excel e escrever dados nele?

Criar um novo arquivo Excel do zero é uma tarefa fundamental. Com o IronXL, você pode gerar um livro, adicionar planilhas e preencher células com dados de qualquer fonte, como uma coleção de objetos. Isso é perfeito para tarefas como exportar dados de aplicativos ou gerar relatórios diários.

Vamos ver um exemplo prático. Imagine que temos uma lista de dados de produtos que queremos exportar para uma planilha do Excel.

Escrever uma Coleção em uma Nova Planilha do Excel

O código a seguir demonstra como pegar um List(Of Product) e escrever seu conteúdo em um novo arquivo Excel criado.

Imports IronXL
Imports System.Collections.Generic
Imports System.Linq

Public Class Product
    Public Property ID As Integer
    Public Property Name As String
    Public Property Price As Decimal
End Class

Module Program
    Sub Main(args As String())
        ' 1. Prepare a list of data to write to Excel.
        Dim products As New List(Of Product) From {
            New Product With {.ID = 1, .Name = "Laptop", .Price = 1200.50D},
            New Product With {.ID = 2, .Name = "Keyboard", .Price = 75.00D},
            New Product With {.ID = 3, .Name = "Mouse", .Price = 25.99D}
        }

        ' 2. Create a new Excel workbook and select the default worksheet.
        Dim workbook As WorkBook = WorkBook.Create()
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet

        ' 3. Write headers for our data.
        sheet("A1").Value = "Product ID"
        sheet("B1").Value = "Product Name"
        sheet("C1").Value = "Price"

        ' Style the header row.
        Dim headerRange = sheet.GetRange("A1:C1")
        headerRange.Style.Font.Bold = True
        headerRange.Style.SetBackgroundColor("#D3D3D3") ' Light Gray

        ' 4. Iterate through the product list and write data to subsequent rows.
        For i As Integer = 0 To products.Count - 1
            Dim product = products(i)
            Dim row = i + 2 ' Start from the second row
            sheet("A" & row).Value = product.ID
            sheet("B" & row).Value = product.Name
            sheet("C" & row).Value = product.Price
        Next

        ' 5. Apply currency formatting to the price column.
        Dim priceColumn = sheet.GetRange("C2:C" & products.Count + 1)
        priceColumn.Style.Format = "$#,##0.00"

        ' 6. Auto-size columns for better readability.
        sheet.Columns.AutoFit()

        ' 7. Save the newly created and populated workbook to a file.
        workbook.SaveAs("ProductReport.xlsx")

    End Sub
End Module

Como funciona

Este exemplo de código demonstra a simplicidade e o poder da API do IronXL para automatizar a entrada de dados no Excel.

  1. Preparação de Dados: Começamos com uma classe Product simples e um List(Of Product) que representa os dados que queremos exportar. Isso simula a extração de dados de um banco de dados ou outra camada de lógica de negócios.
  2. Criação de Planilha e de Pasta de Trabalho: WorkBook.Create() gera uma nova pasta de trabalho Excel vazia na memória. Cada nova pasta de trabalho contém automaticamente uma planilha, que podemos acessar através da propriedade DefaultWorkSheet. Para documentos mais complexos, você pode adicionar mais planilhas usando o método CreateWorkSheet.
  3. Escrita de Dados: Acessamos as células usando a notação familiar no estilo A1 (por exemplo, sheet("A1")). A propriedade .Value é usada tanto para definir quanto para obter o conteúdo de uma célula. O IronXL lida automaticamente com conversões de tipos de dados para números, strings e datas.
  4. Estilo e Formatação: O IronXL oferece uma API abrangente de estilo. No exemplo, selecionamos um Range de células e aplicamos formatação em negrito e uma cor de fundo ao nosso cabeçalho. Também aplicamos um formato de moeda à coluna de preços usando a propriedade Style.Format, um recurso essencial para criar relatórios profissionais. Para mais opções de estilo, explore a documentação da API para o objeto Style.
  5. Salvando o Arquivo: Finalmente, workbook.SaveAs("ProductReport.xlsx") escreve a pasta de trabalho na memória para o sistema de arquivos. IronXL suporta vários formatos, incluindo .xlsx, .xls, .csv, e .tsv, proporcionando flexibilidade em como exportar seus dados.

Como posso escrever dados em um arquivo Excel existente?

Frequentemente, não há necessidade de criar um novo arquivo, mas sim adicionar dados a um existente. Isso é comum para registros de log, adicionando registros a um conjunto de dados ou atualizando um relatório. O IronXL torna este processo tão fácil quanto criar um novo arquivo.

O exemplo a seguir demonstra como abrir uma planilha existente, encontrar a última linha usada e adicionar novos dados.

Imports IronXL
Imports System.Collections.Generic
Imports System.Linq

' (Assuming the Product class from the previous example is available)

Module Program
    Sub Main(args As String())
        ' Ensure the file from our previous example exists.
        If Not System.IO.File.Exists("ProductReport.xlsx") Then
            Console.WriteLine("Please run the first example to create ProductReport.xlsx")
            Return
        End If

        ' 1. Load the existing workbook from the file system.
        Dim workbook As WorkBook = WorkBook.Load("ProductReport.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet

        ' 2. Find the first empty row to append new data.
        ' The LastRowUsed property gives us the last row with data.
        Dim lastRow = sheet.Info.LastRowUsed
        Dim newRowIndex = lastRow.RowNumber + 1

        ' 3. Define the new data to be added.
        Dim newProducts As New List(Of Product) From {
            New Product With {.ID = 4, .Name = "Monitor", .Price = 350.00D},
            New Product With {.ID = 5, .Name = "Webcam", .Price = 99.99D}
        }

        ' 4. Loop through the new data and write it to the worksheet.
        For i As Integer = 0 To newProducts.Count - 1
            Dim product = newProducts(i)
            Dim currentRow = newRowIndex + i
            sheet("A" & currentRow).Value = product.ID
            sheet("B" & currentRow).Value = product.Name
            sheet("C" & currentRow).Value = product.Price
        Next

        ' 5. Re-apply formatting and auto-fit columns to include new data.
        Dim priceColumn = sheet.GetRange("C2:C" & sheet.Info.LastRowUsed.RowNumber)
        priceColumn.Style.Format = "$#,##0.00"
        sheet.Columns.AutoFit()

        ' 6. Save the changes back to the original file.
        workbook.Save()

        ' Or save as a new file to preserve the original.
        ' workbook.SaveAs("ProductReport_Updated.xlsx")
    End Sub
End Module

Explicação Detalhada

Modificar um arquivo existente segue um padrão lógico de carregar-editar-salvar.

  1. Carregando a Pasta de Trabalho: Em vez de WorkBook.Create(), usamos WorkBook.Load("ProductReport.xlsx"). Isso abre o arquivo especificado e analisa seu conteúdo em um objeto WorkBook, pronto para manipulação.
  2. Encontrando o Ponto de Inserção: Um desafio importante ao adicionar dados é encontrar onde começar a escrever. IronXL simplifica isso com a propriedade sheet.Info.LastRowUsed, que retorna o último objeto Row contendo dados. Simplesmente pegamos seu número de linha e adicionamos um para encontrar a primeira linha vazia.
  3. Adicionando Dados: O processo de escrever os novos dados é idêntico ao exemplo anterior. Iteramos através da nossa nova lista Product e preenchemos as células nas linhas vazias recém-identificadas.
  4. Salvando Alterações: O método workbook.Save() substitui o arquivo original com a pasta de trabalho modificada da memória. Se você precisar preservar o original, basta usar SaveAs() com um novo nome de arquivo, como mostrado na linha comentada.

Como Eu Escrevo um DataTable para uma Planilha Excel?

Para desenvolvedores que trabalham com dados de fontes como o SQL Server, uma tarefa comum é escrever o conteúdo de um DataTable diretamente em uma planilha Excel. IronXL simplifica isso com um método embutido, eliminando a necessidade de percorrer linhas e colunas manualmente.

Este exemplo mostra como preencher um DataTable e exportá-lo para um novo arquivo Excel em uma etapa.

Imports IronXL
Imports System.Data

Module Program
    Sub Main(args As String())
        ' 1. Create and populate a DataTable. This often comes from a database query.
        Dim dt As New DataTable("EmployeeData")
        dt.Columns.Add("EmployeeID", GetType(Integer))
        dt.Columns.Add("FullName", GetType(String))
        dt.Columns.Add("Department", GetType(String))
        dt.Columns.Add("HireDate", GetType(Date))

        dt.Rows.Add(101, "John Smith", "Sales", New Date(2022, 5, 20))
        dt.Rows.Add(102, "Jane Doe", "Engineering", New Date(2021, 8, 15))
        dt.Rows.Add(103, "Peter Jones", "Marketing", New Date(2023, 1, 10))

        ' 2. Create a new workbook.
        Dim workbook As WorkBook = WorkBook.Create()
        Dim sheet As WorkSheet = workbook.CreateWorkSheet("Employees")

        ' 3. Write the DataTable to the worksheet starting at cell A1.
        ' The second parameter (True) indicates that column headers should be included.
        sheet.Write(dt, "A1", True)

        ' 4. Apply some styling for a more polished look.
        sheet.Columns.AutoFit()
        Dim headerRange = sheet.GetRange("A1:D1")
        headerRange.Style.Font.Bold = True
        headerRange.Style.SetBackgroundColor("#C5D9F1") ' Light Blue

        Dim dateColumn = sheet.GetRange("D2:D" & dt.Rows.Count + 1)
        dateColumn.Style.Format = "yyyy-mm-dd"

        ' 5. Save the workbook.
        workbook.SaveAs("EmployeeDatabaseExport.xlsx")
    End Sub
End Module

O método sheet.Write() é incrivelmente eficiente para este propósito. Ele mapeia inteligentemente a estrutura DataTable para a planilha, incluindo cabeçalhos de coluna, se especificado. Este é um recurso poderoso para qualquer aplicativo orientado a dados e uma economia significativa de tempo comparado à iteração manual. Para mais detalhes sobre importação e exportação de dados, confira nosso tutorial sobre como converter entre diferentes formatos de planilhas.

O que Mais Posso Fazer ao Escrever Arquivos Excel?

Escrever dados é apenas o começo. Uma biblioteca robusta de Excel para VB.NET deve oferecer um conjunto completo de recursos para automatizar qualquer tarefa de planilha. IronXL oferece capacidades extensas, incluindo:

  • Fórmulas: Defina e compute fórmulas programaticamente. Você pode atribuir uma fórmula ao Value de uma célula (por exemplo, sheet("C1").Value = "=SUM(A1:B1)") e o IronXL calculará o resultado.
  • Gráficos: Crie vários tipos de gráficos a partir de dados da planilha para visualizar informações.
  • Validação de Dados: Imponha regras nas células, como apenas permitir números dentro de um intervalo específico ou valores de uma lista suspensa.
  • Formatação Condicional: Aplique estilo às células com base em seus valores, ajudando a destacar pontos de dados importantes.
  • Segurança e Proteção: Proteja planilhas ou workbooks inteiros com senhas para controlar o acesso e evitar modificações.

Esses recursos permitem a automação completa de workflows complexos de geração de relatórios e análise de dados diretamente em suas aplicações .NET.

Comece a Escrever em Arquivos Excel em VB.NET Hoje

Como demonstrado, escrever dados em arquivos Excel em VB.NET é significativamente simplificado ao usar uma biblioteca moderna como o IronXL. Ao evitar as complexidades e dependências da Interop do Office, você pode construir aplicações mais confiáveis, de melhor desempenho e facilmente implantáveis. Se você precisa criar arquivos Excel do zero, acrescentar dados a relatórios existentes ou exportar um DataTable, o IronXL fornece uma API intuitiva e poderosa para realizar o trabalho de forma eficiente.

Você pode baixar o IronXL e experimentá-lo com uma licença de teste gratuita para ver como ele pode ser facilmente integrado em seus projetos.

Para aqueles com necessidades mais amplas, lembre-se de que o IronXL também faz parte da Iron Suite for .NET. Com uma única licença, você tem acesso a um conjunto abrangente de bibliotecas para lidar com PDFs, códigos de barras, OCR e muito mais, oferecendo um valor excepcional para qualquer desenvolvedor .NET.

Perguntas frequentes

Como posso escrever em arquivos do Excel em VB.NET sem usar o Office Interop?

Você pode usar a biblioteca IronXL para escrever em arquivos do Excel em VB.NET sem precisar do Office Interop. O IronXL permite criar, ler e manipular arquivos do Excel de forma integrada, sem a necessidade de instalar o Microsoft Excel.

Quais são as vantagens de usar o IronXL em vez do Office Interop para automatizar tarefas no Excel?

O IronXL oferece vantagens significativas em relação ao Office Interop, como melhor desempenho, implantação mais fácil e a capacidade de ser executado em servidores sem a necessidade de instalar o Microsoft Excel. Ele simplifica as tarefas de automação do Excel em aplicativos .NET.

Como faço para instalar o IronXL em um projeto VB.NET para manipulação de arquivos Excel?

Para instalar o IronXL em um projeto VB.NET, use o Gerenciador de Pacotes NuGet no Visual Studio. Procure por IronXl.Excel e instale-o. Como alternativa, use o Console do Gerenciador de Pacotes com o comando: Install-Package IronXl.Excel .

Como faço para criar um novo arquivo do Excel e inserir dados em VB.NET?

Com o IronXL, você pode criar um novo arquivo do Excel chamando WorkBook.Create() . Acesse uma planilha e insira dados usando a notação A1, como sheet("A1").Value = "Example Data" . Salve o arquivo usando o método SaveAs() .

Como posso adicionar dados a um arquivo Excel existente usando o IronXL?

Para adicionar dados a um arquivo Excel existente com o IronXL, carregue a pasta de trabalho usando WorkBook.Load("filename.xlsx") . Determine a próxima linha vazia com sheet.Info.LastRowUsed e insira seus novos dados. Salve as modificações usando workbook.Save() .

É possível exportar um DataTable para uma planilha do Excel em VB.NET?

Sim, o IronXL simplifica a exportação de um DataTable para uma planilha do Excel. Use o método sheet.Write() para transferir a tabela inteira para a planilha de forma eficiente.

Quais formatos de arquivo Excel o IronXL consegue processar?

O IronXL suporta vários formatos de arquivo do Excel, incluindo .xlsx , .xls , .csv e .tsv , permitindo flexibilidade no manuseio de diversos tipos de dados em planilhas.

Posso formatar células do Excel e usar fórmulas com o IronXL?

Sim, o IronXL oferece amplo suporte para formatação e fórmulas. Você pode ajustar fontes, cores, bordas e formatos de números programaticamente, além de definir fórmulas do Excel como "=SUM(A1:A10)" para cálculos.

Jacob Mellor, Diretor de Tecnologia da Team Iron
Diretor de Tecnologia

Jacob Mellor é Diretor de Tecnologia da Iron Software e um engenheiro visionário pioneiro na tecnologia C# PDF. Como desenvolvedor original do código-fonte principal da Iron Software, ele moldou a arquitetura de produtos da empresa desde sua criação, transformando-a, juntamente com o CEO Cameron Rimington, em uma ...

Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me