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

Untitled Blog Post

Criar relatórios do Excel em C# é um requisito fundamental em negócios modernos e aplicações .NET. Quer você esteja gerando demonstrações financeiras, análises de vendas ou painéis de inventário, automatizar o processo para criar arquivos do Excel e planilhas do Excel economiza horas de esforço manual enquanto reduz erros.

IronXL oferece uma solução poderosa e intuitiva para desenvolvedores criarem um relatório Excel em C sem necessidade de Microsoft Office, MS Excel ou dependências Interop tradicionais. Ao contrário da Automação OLE ou abordagens que dependem do aplicativo Excel, o IronXL permite gerar livros de trabalho do Excel e dados do Excel diretamente no código com apenas uma linha onde necessário. Neste guia, ensinaremos você a criar relatórios Excel com IronXl, completo com exemplos de código fáceis de seguir que você pode implementar facilmente em seus próprios projetos!

O que é o IronXL e por que usá-lo para geração de arquivos Excel?

IronXL é uma biblioteca .NET Excel que permite aos desenvolvedores criar Excel, ler planilhas Excel e manipular arquivos Excel diretamente do código-fonte C# ou Visual Basic. Diferentemente dos métodos de Interop do Microsoft Office que dependem do aplicativo completo do Excel ou da engenharia reversa através do Open XML SDK, o IronXL funciona em ambientes Windows, Linux, macOS e nuvem sem exigir instalação do Excel ou dependências de terceiros. Isso o torna ideal para relatórios de Excel no lado do servidor, fluxos de trabalho automatizados e aplicações web construídas no .NET Core ou no .NET Framework.

Para equipes em transição de processos manuais de Excel, bibliotecas antigas ou fluxos de trabalho de ferramentas de produtividade Open XML que exigem navegação por vários namespaces XML, o IronXL fornece uma API intuitiva. Ele suporta tanto arquivos XLS legados quanto arquivos XLSX modernos, que são essencialmente arquivos ZIP contendo arquivos XML e várias pastas. Quer você queira gerar um novo livro de trabalho do Excel, manipular várias planilhas ou carregar dados do Excel de código externo, o IronXL simplifica drasticamente o processo sem a necessidade de entender os formatos subjacentes.

Começando com o IronXL para criar um arquivo Excel

Configurar o IronXL para criar relatórios do Excel leva apenas alguns minutos. Instale a biblioteca via Gerenciador de Pacotes NuGet no Visual Studio:

Install-Package IronXl.Excel

Baixe o IronXL hoje e comece a automatizar sua geração de relatórios do Excel.

Uma vez instalado, criar seu primeiro relatório do Excel requer apenas algumas linhas de código:

using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");
using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");
$vbLabelText   $csharpLabel

Este código cria um novo arquivo de relatório do Excel com um título formatado. A sintaxe familiar de referência de células (reportSheet["A1"]) facilita para os desenvolvedores especificarem exatamente onde os dados devem aparecer, assim como trabalhar com o Excel manualmente.

Saída

Como Criar Relatórios Excel em C# Usando IronXL: Figura 1 - Exemplo de saída Excel

Carregando Dados de Múltiplas Fontes

Relatórios do Excel do mundo real raramente usam dados estáticos. IronXL se destaca na integração de dados Excel a partir de vários formatos, APIs, novas fontes DataTable, ou mesmo diversos arquivos XML diferentes. Isso o torna perfeito para geração de relatórios do Excel dinâmicos em aplicações de servidor ou da web em C#.

Integração de Banco de Dados

Para relatórios Excel baseados em banco de dados, o IronXL trabalha perfeitamente com ADO.NET Tabelas de Dados:

using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";  
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}
using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";  
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}
$vbLabelText   $csharpLabel

Essa abordagem carrega dados de vendas diretamente do SQL Server no seu relatório do Excel. A integração com o DataTable significa que você pode usar o código de acesso a dados existente sem modificação. Para cenários mais complexos, confira como carregar Excel a partir de bancos de dados SQL.

Trabalhando com Coleções

Para dados em memória, dados Excel de respostas de API, ou uma nova Tabela de Dados, as coleções podem preencher planilhas Excel facilmente sem Microsoft Excel ou dependências de terceiros:

var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}
var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}
$vbLabelText   $csharpLabel

Este método permite criar um relatório Excel em C# diretamente em uma aplicação .NET, tornando o processo envolvido para gerar várias planilhas ou arquivos XLSX muito mais simples do que automação OLE manual ou engenharia reversa de arquivos XML.

Saída

Como Criar Relatórios Excel em C# Usando IronXL: Figura 2 - Planilha de exemplo gerada a partir dos dados

Formatando Relatórios Excel Profissionais

Dados brutos por si só não fazem um relatório profissional. IronXL oferece opções abrangentes de formatação de célula para criar arquivos Excel polidos e prontos para negócios. O código a seguir mostra como é fácil com IronXL:

using IronXL;
using IronXl.Styles;
class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency  
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}
using IronXL;
using IronXl.Styles;
class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency  
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}
$vbLabelText   $csharpLabel

Essas opções de formatação transformam dados básicos em relatórios profissionais. A API de estilo cobre tudo, desde fontes e cores até bordas e alinhamento, proporcionando controle total sobre a aparência do relatório Excel. Para necessidades avançadas de formatação, explore formatação condicional para destacar dados importantes automaticamente.

Como Criar Relatórios Excel em C# Usando IronXL: Figura 3 - Saída Excel formatada

Usando Fórmulas para Cálculos Dinâmicos em Relatórios Excel

O poder do Excel está em suas fórmulas, e IronXL suporta totalmente a criação de fórmulas Excel:

// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";
// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";
$vbLabelText   $csharpLabel

O suporte a fórmulas inclui todas as funções padrão do Excel, como SUM, AVERAGE, IF, VLOOKUP e mais. O IronXL manipula automaticamente as dependências de fórmulas e a ordem de cálculo, tornando a geração de relatórios do Excel com cálculos complexos direta. Saiba mais sobre funções matemáticas em IronXL.

Como Criar Relatórios Excel em C# Usando IronXL: Figura 4 - Exemplo de saída com fórmulas

Relatórios Baseados em Modelos

Para relatórios Excel recorrentes ou pastas de trabalho padronizadas, IronXL suporta geração baseada em modelos, permitindo que os desenvolvedores criem um arquivo Excel a partir de um modelo sem lidar com Open XML SDK, arquivos rels, ou várias pastas:

// Load existing template
WorkBook templateBook = WorkBook.Load("ReportTemplate.xlsx");
WorkSheet templateSheet = templateBook.DefaultWorkSheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");
// Load existing template
WorkBook templateBook = WorkBook.Load("ReportTemplate.xlsx");
WorkSheet templateSheet = templateBook.DefaultWorkSheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");
$vbLabelText   $csharpLabel

Esta abordagem mantém a formatação consistente enquanto atualiza conteúdo dinâmico, perfeito para relatórios mensais ou documentos padronizados.

Como Criar Relatórios Excel em C# Usando IronXL: Figura 5 - O modelo de relatório vs. nosso arquivo Excel criado usando o modelo

Melhores Práticas e Solução de Problemas

Ao implementar a geração de relatórios Excel, mantenha estas dicas em mente:

  • Uso de memória com arquivos grandes: Processe dados em partes ao invés de carregar conjuntos de dados inteiros (Recomendações da Microsoft para arquivos Excel grandes)
  • Problemas de formatação de datas: Use DateTime.ToOADate() para datas compatíveis com Excel (Sistema de data do Excel explicado)
  • Erros de arquivos bloqueados: Sempre descarte adequadamente objetos Excel usando declarações de "using" ou novas abordagens com MemoryStream.
  • Estilos ausentes: Algumas propriedades de estilo exigem definir primeiro a cor de fundo

Conclusão

O IronXL transforma a geração de relatórios do Excel de um processo manual tedioso em um fluxo de trabalho automatizado e confiável. Com sua API intuitiva, suporte multiplataforma e conjunto de recursos abrangente, os desenvolvedores podem criar relatórios Excel profissionais em minutos em vez de horas. A combinação de integração fácil de dados, opções de formatação poderosas e suporte a fórmulas torna o IronXL uma ferramenta essencial para qualquer desenvolvedor C# que trabalhe com relatórios do Excel. Para desenvolvedores interessados, a IronXL oferece uma versão de teste gratuita e opções de licenciamento adicionais para empresas e indivíduos.

!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100 101010100010010000101111101010000010100100111101000100010101010100001101010100010111110101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Perguntas frequentes

Como posso criar um relatório do Excel em C#?

Você pode criar um relatório do Excel em C# usando a biblioteca IronXL, que simplifica o processo de geração de arquivos do Excel com recursos como formatação, fórmulas e integração com banco de dados.

Quais são os benefícios de usar o IronXL para gerar relatórios em Excel?

O IronXL oferece uma maneira eficiente de automatizar a geração de relatórios do Excel, reduzindo o esforço manual e minimizando erros. Ele suporta uma variedade de recursos, como formatação avançada, cálculos de fórmulas e integração perfeita com bancos de dados.

É possível integrar bancos de dados ao criar relatórios do Excel com o IronXL?

Sim, o IronXL permite fácil integração com bancos de dados, possibilitando que você extraia dados diretamente do seu banco de dados para seus relatórios do Excel.

Posso aplicar formatação personalizada a relatórios do Excel usando o IronXL?

Com certeza, o IronXL suporta formatação personalizada, permitindo que você estilize seus relatórios do Excel com fontes, cores e estilos de célula específicos para atender aos padrões profissionais.

O IronXL suporta cálculos com fórmulas em relatórios do Excel?

Sim, o IronXL suporta o uso de fórmulas em relatórios do Excel, permitindo cálculos e análises de dados diretamente nos arquivos do Excel gerados.

Por que devo automatizar a geração de relatórios do Excel em minha aplicação .NET?

Automatizar a geração de relatórios do Excel em sua aplicação .NET economiza tempo, reduz erros humanos e aumenta a produtividade, eliminando tarefas repetitivas envolvidas na criação manual de relatórios.

O IronXL consegue lidar com grandes conjuntos de dados ao criar relatórios do Excel?

O IronXL foi projetado para lidar com grandes conjuntos de dados de forma eficiente, tornando-o ideal para gerar relatórios do Excel que exigem o processamento de quantidades significativas de dados.

Que tipos de relatórios do Excel posso criar usando o IronXL?

Com o IronXL, você pode criar diversos tipos de relatórios em Excel, como demonstrações financeiras, análises de vendas, painéis de controle de estoque e muito mais, personalizados para atender às necessidades específicas do seu negócio.

Como o IronXL ajuda a reduzir o esforço manual na criação de relatórios do Excel?

O IronXL automatiza o processo de criação de relatórios, gerando arquivos do Excel programaticamente, o que reduz significativamente o esforço manual envolvido na formatação, entrada de dados e cálculos.

O IronXL é adequado para criar relatórios profissionais em Excel?

Sim, o IronXL é adequado para criar relatórios profissionais em Excel, oferecendo uma gama de recursos que garantem que seus relatórios sejam bem formatados, precisos e prontos para uso comercial.

Jordi Bardia
Engenheiro de Software
Jordi é extremamente proficiente em Python, C# e C++, e quando não está utilizando suas habilidades na Iron Software, dedica-se à programação de jogos. Compartilhando as responsabilidades por testes, desenvolvimento e pesquisa de produtos, Jordi agrega imenso valor à melhoria contínua dos produtos. Essa experiência diversificada o mantém ...
Leia mais

Iron Support Team

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