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

Como criar relatórios do Excel em C# com IronXL

Creating Excel Reports in C# with IronXL

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 do Excel em C# sem exigir o Microsoft Office, MS Excel ou dependências de 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, vamos ensiná-lo a criar relatórios do Excel com o IronXL, completo com exemplos de código fáceis de seguir que você pode facilmente implementar em seus próprios projetos!

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

IronXL é uma biblioteca Excel .NET que permite aos desenvolvedores criar, ler planilhas do Excel e manipular arquivos Excel diretamente do código-fonte C# ou Visual Basic. Diferente das abordagens do Microsoft Office Interop que dependem do aplicativo completo do Excel ou engenharia reversa via Open XML SDK, o IronXL funciona em Windows, Linux, macOS, e ambientes de 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élula (reportSheet["A1"]) facilita aos desenvolvedores especificar exatamente onde os dados devem aparecer, assim como trabalhar manualmente com o Excel.

Saída

Como Criar Relatórios Excel em C# Usando IronXL: Imagem 1 - Exemplo de saída do 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, IronXL funciona perfeitamente com ADO.NET DataTables:

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 na memória, dados Excel de respostas de API, ou um novo DataTable, 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: Imagem 2 - Planilha de exemplo da saída de 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: Imagem 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, entre outras. 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: Imagem 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: Imagem 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: Procese dados em pedaços ao invés de carregar conjuntos de dados inteiros (recomendações da Microsoft para arquivos Excel grandes)
  • Problemas de formatação de data: Use DateTime.ToOADate() para datas compatíveis com Excel (Sistema de data do Excel explicado)
  • Erros de arquivo bloqueado: Sempre descarte corretamente os objetos Excel usando declarações using ou novas abordagens MemoryStream.
  • Estilos ausentes: Algumas propriedades de estilo requerem a definição da cor de fundo primeiro

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, IronXL oferece uma experimentação gratuita e opções de licenciamento adicionais para empresas e indivíduos.

!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100 101010100010010000101111101010000010100100111101000100010101010100001101010100010111110101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Perguntas frequentes

Para que serve o IronXL em C#?

IronXL é uma biblioteca poderosa para C# que permite aos desenvolvedores criar, editar e ler arquivos do Excel com facilidade. Ela oferece suporte à geração de relatórios profissionais do Excel com formatação avançada, fórmulas e integração de dados.

Como posso criar relatórios do Excel usando o IronXL?

Para criar relatórios do Excel usando o IronXL, você pode utilizar sua API robusta para adicionar dados, formatar células, aplicar fórmulas e integrar-se a bancos de dados, tudo em um ambiente C#.

Quais recursos o IronXL oferece para geração de relatórios em Excel?

O IronXL oferece recursos como formatação de células, aplicação de fórmulas, validação de dados, criação de gráficos e integração perfeita com bancos de dados para a geração de relatórios completos em Excel.

O IronXL suporta integração com banco de dados?

Sim, o IronXL suporta integração com bancos de dados, permitindo que você extraia dados diretamente de bancos de dados e os incorpore em seus relatórios do Excel, simplificando a análise e a geração de relatórios.

O IronXL consegue lidar com fórmulas complexas do Excel?

O IronXL é capaz de lidar com uma ampla variedade de fórmulas do Excel, permitindo que os desenvolvedores executem cálculos complexos e automatizem o processamento de dados em relatórios do Excel.

É possível formatar células do Excel usando o IronXL?

O IronXL oferece amplas opções de formatação, permitindo personalizar a aparência das células, incluindo estilo da fonte, cor, bordas e muito mais, para criar relatórios do Excel visualmente atraentes.

Posso criar gráficos no Excel com o IronXL?

Sim, o IronXL permite criar diversos tipos de gráficos em planilhas do Excel, ajudando a representar visualmente os dados e a melhorar a interpretabilidade dos seus relatórios.

Como o IronXL simplifica o processo de geração de relatórios em Excel?

O IronXL simplifica o processo de geração de relatórios do Excel, oferecendo um conjunto abrangente de recursos que otimizam a entrada, formatação, cálculo e saída de dados, tudo dentro do ambiente de programação C#.

O IronXL consegue lidar com grandes conjuntos de dados de forma eficiente?

O IronXL foi otimizado para desempenho, permitindo que ele processe grandes conjuntos de dados com eficiência, tornando-o ideal para gerar relatórios complexos sem comprometer a velocidade ou a confiabilidade.

Para qual linguagem de programação o IronXL foi projetado?

O IronXL foi projetado especificamente para uso com C#, proporcionando integração e funcionalidade perfeitas para desenvolvedores que trabalham com o framework .NET.

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