Como criar um arquivo Excel em C#

How to Create an Excel File in C# (.NET Tutorial)

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL é uma poderosa biblioteca C# e .NET para Excel que permite criar, ler e editar planilhas XLSX programaticamente — sem dependências do Microsoft Office ou de interoperabilidade. É compatível com .NET 8, .NET 9, .NET Core e .NET Framework, e funciona em Windows, Linux, macOS, Azure e AWS.

Este tutorial orienta você na criação de uma planilha completa do Excel em C#: definindo valores de células, aplicando formatação, adicionando fórmulas e exportando para XLSX, CSV e outros formatos — com exemplos de código passo a passo.

Início Rápido: Criar um Arquivo do Excel

Use o IronXL para criar um novo arquivo do Excel em instantes — basta escolher um formato, adicionar uma planilha, definir o valor de qualquer célula e salvar. É a maneira mais rápida de gerar arquivos XLSX com chamadas de API intuitivas e sem complicações de interoperabilidade.

  1. Instale IronXL com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronXl.Excel
  2. Copie e execute este trecho de código.

    WorkBook book = IronXl.WorkBook.Create(IronXl.ExcelFileFormat.XLSX); book.CreateWorkSheet("Sheet1")["A1"].Value = "Hello World"; book.SaveAs("MyFile.xlsx");
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronXL em seu projeto hoje com uma avaliação gratuita

    arrow pointer

O que é o IronXL e por que usá-lo para criar arquivos do Excel?

IronXL é uma API intuitiva em C# e VB para Excel que permite ler, editar e criar planilhas do Excel em .NET com desempenho excepcional. Ao contrário das abordagens tradicionais, não há necessidade de instalar o Microsoft Office ou usar o Excel Interop, tornando a implementação mais simples e confiável.

O IronXL oferece suporte completo aos ambientes .NET 9, .NET 8, .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS e Azure.

Características do IronXL

Suporte humano direto da nossa equipe de desenvolvimento .NET

  • Instalação rápida com o Microsoft Visual Studio
  • GRATUITO para desenvolvimento. Licenças de $799

Como posso criar e salvar um arquivo do Excel rapidamente?

Instale o IronXL via NuGet ou baixe a DLL diretamente . A classe WorkBook é o seu ponto de entrada para todas as operações do Excel, enquanto a classe WorkSheet fornece métodos para manipular planilhas individuais — o passo a passo completo começa na Etapa 1 abaixo.


How Do I Install the IronXL C# Library?

Instale o IronXL através do Gerenciador de Pacotes NuGet no Visual Studio ou utilize o Console do Gerenciador de Pacotes:

Install-Package IronXl.Excel

Acesse o Gerenciador de Pacotes NuGet através do menu Projeto ou clicando com o botão direito do mouse no seu projeto no Explorador de Soluções.

Menu do projeto do Visual Studio exibindo a opção Gerenciar Pacotes NuGet

**Figura 3** – *Acessando o Gerenciador de Pacotes NuGet através do menu Projeto*

O menu de contexto do Solution Explorer exibe a opção Gerenciar Pacotes NuGet.

**Figura 4** – *Menu de contexto do botão direito do mouse no Explorador de Soluções*


Procure por IronXl.Excel na lista de pacotes e clique em Instalar.


O Gerenciador de Pacotes NuGet mostra o pacote IronXl.Excel pronto para instalação.

**Figura 5** – *Instalando o IronXl.Excel através do Gerenciador de Pacotes NuGet*

Alternativamente, baixe a DLL do IronXL diretamente e adicione-a como referência ao seu projeto através do Solution Explorer > References > Browse for IronXL.dll.

Página de download do site da IronXL mostrando instruções de instalação e botão de download.

**Figura 6** – *Baixe a biblioteca IronXL do site oficial.*

{i:(O IronXL não requer a instalação do Microsoft Office ou do Excel Interop — ele funciona em qualquer plataforma compatível com .NET, incluindo Windows, Linux, macOS e ambientes de nuvem.)}


Como configuro meu projeto .NET?

O IronXL funciona com qualquer tipo de projeto .NET — aplicativos de console, aplicativos web ASP.NET, APIs ou ferramentas de desktop. O exemplo abaixo utiliza uma aplicação web ASP.NET, mas o processo é o mesmo em todos os modelos de projeto.

Siga estes passos para criar um site ASP.NET:

  1. Abra o Visual Studio
  2. Clique em Arquivo > Novo Projeto
  3. Selecione Web em Visual C# na lista Tipo de projeto.
  4. Selecione Aplicativo Web ASP.NET


    Caixa de diálogo Novo Projeto do Visual Studio com a opção Aplicativo Web ASP.NET selecionada

    Figura 1 – Create new ASP.NET project

  5. Clique em OK
  6. Selecione o modelo de Formulários Web

    Seleção de modelo de projeto ASP.NET mostrando a opção Web Forms

    Figura 2 – Select Web Forms template

  7. Clique em OK

Com seu projeto pronto, instale o IronXL para começar a criar arquivos do Excel programaticamente.


How Do I Create an Excel Workbook in C#?

Criar uma nova planilha do Excel com o IronXL requer apenas uma linha de código:

using IronXL;

// Create workbook with XLSX format (recommended for modern Excel)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

// Alternative: Create legacy XLS format for older Excel versions
WorkBook legacyWorkbook = WorkBook.Create(ExcelFileFormat.XLS);
using IronXL;

// Create workbook with XLSX format (recommended for modern Excel)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

// Alternative: Create legacy XLS format for older Excel versions
WorkBook legacyWorkbook = WorkBook.Create(ExcelFileFormat.XLS);
$vbLabelText   $csharpLabel

O método WorkBook.Create suporta os formatos XLS (Excel 97-2003) e XLSX (Excel 2007+). O formato XLSX é recomendado para melhor desempenho e arquivos menores.

  • XLSX : Recomendado para todas as versões modernas do Excel (2007+) — arquivos menores, melhor desempenho.
  • XLS : Formato legado para compatibilidade com o Excel 97–2003

Como adiciono uma planilha à minha pasta de trabalho?

Adicionar planilhas é simples:

// Create a worksheet with custom name for budget tracking
WorkSheet budgetSheet = workbook.CreateWorkSheet("2020 Budget");

// Add multiple worksheets for different purposes
WorkSheet salesSheet = workbook.CreateWorkSheet("Sales Data");
WorkSheet inventorySheet = workbook.CreateWorkSheet("Inventory");

// Access existing worksheet by name
WorkSheet existingSheet = workbook.GetWorkSheet("2020 Budget");
// Create a worksheet with custom name for budget tracking
WorkSheet budgetSheet = workbook.CreateWorkSheet("2020 Budget");

// Add multiple worksheets for different purposes
WorkSheet salesSheet = workbook.CreateWorkSheet("Sales Data");
WorkSheet inventorySheet = workbook.CreateWorkSheet("Inventory");

// Access existing worksheet by name
WorkSheet existingSheet = workbook.GetWorkSheet("2020 Budget");
$vbLabelText   $csharpLabel

Um caderno de exercícios contém uma ou mais folhas de exercícios. Cada planilha consiste em linhas e colunas, com células em suas interseções. Use o método CreateWorkSheet para adicionar novas planilhas à sua pasta de trabalho.

  • CreateWorkSheet("name") : Adiciona uma nova planilha com o nome da guia fornecido
  • GetWorkSheet("name") : Recupera uma planilha existente pelo nome
  • Os nomes das planilhas devem ser únicos dentro de uma pasta de trabalho.

Como faço para definir valores de células no Excel?

Como posso definir os valores das células manualmente?

A definição de valores individuais em células utiliza uma sintaxe intuitiva semelhante à do Excel:

// Set month names in first row for annual budget spreadsheet
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";

// Set different data types - IronXL handles conversion automatically
workSheet["A2"].Value = 1500.50m;  // Decimal for currency
workSheet["A3"].Value = DateTime.Now;  // Date values
workSheet["A4"].Value = true;  // Boolean values
// Set month names in first row for annual budget spreadsheet
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";

// Set different data types - IronXL handles conversion automatically
workSheet["A2"].Value = 1500.50m;  // Decimal for currency
workSheet["A3"].Value = DateTime.Now;  // Date values
workSheet["A4"].Value = true;  // Boolean values
$vbLabelText   $csharpLabel

A propriedade Cell.Value aceita vários tipos de dados, incluindo strings, números, datas e valores booleanos. O IronXL formata automaticamente as células com base no tipo de dados.

Como faço para definir valores de células dinamicamente?

A definição dinâmica de valores é perfeita para aplicações orientadas a dados:

// Initialize random number generator for sample data
Random r = new Random();

// Populate cells with random budget data for each month
for (int i = 2; i <= 11; i++)
{
    // Set different budget categories with increasing ranges
    workSheet[$"A{i}"].Value = r.Next(1, 1000);     // Office Supplies
    workSheet[$"B{i}"].Value = r.Next(1000, 2000);  // Utilities
    workSheet[$"C{i}"].Value = r.Next(2000, 3000);  // Rent
    workSheet[$"D{i}"].Value = r.Next(3000, 4000);  // Salaries
    workSheet[$"E{i}"].Value = r.Next(4000, 5000);  // Marketing
    workSheet[$"F{i}"].Value = r.Next(5000, 6000);  // IT Services
    workSheet[$"G{i}"].Value = r.Next(6000, 7000);  // Travel
    workSheet[$"H{i}"].Value = r.Next(7000, 8000);  // Training
    workSheet[$"I{i}"].Value = r.Next(8000, 9000);  // Insurance
    workSheet[$"J{i}"].Value = r.Next(9000, 10000); // Equipment
    workSheet[$"K{i}"].Value = r.Next(10000, 11000); // Research
    workSheet[$"L{i}"].Value = r.Next(11000, 12000); // Misc
}

// Alternative: Set range of cells with same value
workSheet["A13:L13"].Value = 0; // Initialize totals row
// Initialize random number generator for sample data
Random r = new Random();

// Populate cells with random budget data for each month
for (int i = 2; i <= 11; i++)
{
    // Set different budget categories with increasing ranges
    workSheet[$"A{i}"].Value = r.Next(1, 1000);     // Office Supplies
    workSheet[$"B{i}"].Value = r.Next(1000, 2000);  // Utilities
    workSheet[$"C{i}"].Value = r.Next(2000, 3000);  // Rent
    workSheet[$"D{i}"].Value = r.Next(3000, 4000);  // Salaries
    workSheet[$"E{i}"].Value = r.Next(4000, 5000);  // Marketing
    workSheet[$"F{i}"].Value = r.Next(5000, 6000);  // IT Services
    workSheet[$"G{i}"].Value = r.Next(6000, 7000);  // Travel
    workSheet[$"H{i}"].Value = r.Next(7000, 8000);  // Training
    workSheet[$"I{i}"].Value = r.Next(8000, 9000);  // Insurance
    workSheet[$"J{i}"].Value = r.Next(9000, 10000); // Equipment
    workSheet[$"K{i}"].Value = r.Next(10000, 11000); // Research
    workSheet[$"L{i}"].Value = r.Next(11000, 12000); // Misc
}

// Alternative: Set range of cells with same value
workSheet["A13:L13"].Value = 0; // Initialize totals row
$vbLabelText   $csharpLabel

A interpolação de strings ($"A{i}") facilita a referência dinâmica a células. O indexador Range suporta tanto células individuais quanto intervalos.

Como faço para preencher uma planilha do Excel a partir de um banco de dados?

Carregar dados de bancos de dados para o Excel é um requisito comum:

using System.Data;
using System.Data.SqlClient;
using IronXL;

// Database connection setup for retrieving sales data
string connectionString = @"Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true";
string query = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales";

// Create DataSet to hold query results
DataSet salesData = new DataSet();

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
    // Fill DataSet with sales information
    adapter.Fill(salesData);
}

// Write headers for database columns
workSheet["A1"].Value = "Product Name";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Unit Price";
workSheet["D1"].Value = "Total Sales";

// Apply header formatting
workSheet["A1:D1"].Style.Font.Bold = true;
workSheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
workSheet["A1:D1"].Style.Font.FontColor = "#FFFFFF";

// Populate Excel with database records
DataTable salesTable = salesData.Tables[0];
for (int row = 0; row < salesTable.Rows.Count; row++)
{
    int excelRow = row + 2; // Start from row 2 (after headers)

    workSheet[$"A{excelRow}"].Value = salesTable.Rows[row]["ProductName"].ToString();
    workSheet[$"B{excelRow}"].Value = Convert.ToInt32(salesTable.Rows[row]["Quantity"]);
    workSheet[$"C{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["UnitPrice"]);
    workSheet[$"D{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["TotalSales"]);

    // Format currency columns
    workSheet[$"C{excelRow}"].FormatString = "$#,##0.00";
    workSheet[$"D{excelRow}"].FormatString = "$#,##0.00";
}

// Add summary row with formulas
int summaryRow = salesTable.Rows.Count + 2;
workSheet[$"A{summaryRow}"].Value = "TOTAL";
workSheet[$"B{summaryRow}"].Formula = $"=SUM(B2:B{summaryRow-1})";
workSheet[$"D{summaryRow}"].Formula = $"=SUM(D2:D{summaryRow-1})";
using System.Data;
using System.Data.SqlClient;
using IronXL;

// Database connection setup for retrieving sales data
string connectionString = @"Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true";
string query = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales";

// Create DataSet to hold query results
DataSet salesData = new DataSet();

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
    // Fill DataSet with sales information
    adapter.Fill(salesData);
}

// Write headers for database columns
workSheet["A1"].Value = "Product Name";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Unit Price";
workSheet["D1"].Value = "Total Sales";

// Apply header formatting
workSheet["A1:D1"].Style.Font.Bold = true;
workSheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
workSheet["A1:D1"].Style.Font.FontColor = "#FFFFFF";

// Populate Excel with database records
DataTable salesTable = salesData.Tables[0];
for (int row = 0; row < salesTable.Rows.Count; row++)
{
    int excelRow = row + 2; // Start from row 2 (after headers)

    workSheet[$"A{excelRow}"].Value = salesTable.Rows[row]["ProductName"].ToString();
    workSheet[$"B{excelRow}"].Value = Convert.ToInt32(salesTable.Rows[row]["Quantity"]);
    workSheet[$"C{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["UnitPrice"]);
    workSheet[$"D{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["TotalSales"]);

    // Format currency columns
    workSheet[$"C{excelRow}"].FormatString = "$#,##0.00";
    workSheet[$"D{excelRow}"].FormatString = "$#,##0.00";
}

// Add summary row with formulas
int summaryRow = salesTable.Rows.Count + 2;
workSheet[$"A{summaryRow}"].Value = "TOTAL";
workSheet[$"B{summaryRow}"].Formula = $"=SUM(B2:B{summaryRow-1})";
workSheet[$"D{summaryRow}"].Formula = $"=SUM(D2:D{summaryRow-1})";
$vbLabelText   $csharpLabel

Este exemplo demonstra como ler dados do Excel a partir de bancos de dados, aplicar formatação e usar fórmulas para cálculos. A propriedade FormatString permite a formatação personalizada de números, tal como no Excel.


Como aplicar formatação às células do Excel?

Como posso definir cores de fundo no Excel?

O estilo das células melhora a legibilidade e o apelo visual:

// Set header row background to light gray using hex color
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");

// Apply different colors for data categorization
workSheet["A2:A11"].Style.SetBackgroundColor("#E7F3FF"); // Light blue for January
workSheet["B2:B11"].Style.SetBackgroundColor("#FFF2CC"); // Light yellow for February

// Highlight important cells with bold colors
workSheet["L12"].Style.SetBackgroundColor("#FF0000"); // Red for totals
workSheet["L12"].Style.Font.FontColor = "#FFFFFF"; // White text

// Create alternating row colors for better readability
for (int row = 2; row <= 11; row++)
{
    if (row % 2 == 0)
    {
        workSheet[$"A{row}:L{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
// Set header row background to light gray using hex color
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");

// Apply different colors for data categorization
workSheet["A2:A11"].Style.SetBackgroundColor("#E7F3FF"); // Light blue for January
workSheet["B2:B11"].Style.SetBackgroundColor("#FFF2CC"); // Light yellow for February

// Highlight important cells with bold colors
workSheet["L12"].Style.SetBackgroundColor("#FF0000"); // Red for totals
workSheet["L12"].Style.Font.FontColor = "#FFFFFF"; // White text

// Create alternating row colors for better readability
for (int row = 2; row <= 11; row++)
{
    if (row % 2 == 0)
    {
        workSheet[$"A{row}:L{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
$vbLabelText   $csharpLabel

O método Style.SetBackgroundColor aceita códigos de cores hexadecimais. Combine cores de fundo com cores de fonte para obter planilhas com aparência profissional.

Como criar bordas no Excel?

As fronteiras ajudam a definir regiões de dados e a melhorar a estrutura:

using IronXL;
using IronXl.Styles;

// Create header border - thick bottom line to separate from data
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.TopBorder.Type = BorderType.Thick;
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.Type = BorderType.Thick;

// Add right border to last column
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = BorderType.Medium;

// Create bottom border for data area
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = BorderType.Medium;

// Apply complete border around summary section
var summaryRange = workSheet["A12:L12"];
summaryRange.Style.TopBorder.Type = BorderType.Double;
summaryRange.Style.BottomBorder.Type = BorderType.Double;
summaryRange.Style.LeftBorder.Type = BorderType.Thin;
summaryRange.Style.RightBorder.Type = BorderType.Thin;
summaryRange.Style.SetBorderColor("#0070C0"); // Blue borders
using IronXL;
using IronXl.Styles;

// Create header border - thick bottom line to separate from data
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.TopBorder.Type = BorderType.Thick;
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.Type = BorderType.Thick;

// Add right border to last column
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = BorderType.Medium;

// Create bottom border for data area
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = BorderType.Medium;

// Apply complete border around summary section
var summaryRange = workSheet["A12:L12"];
summaryRange.Style.TopBorder.Type = BorderType.Double;
summaryRange.Style.BottomBorder.Type = BorderType.Double;
summaryRange.Style.LeftBorder.Type = BorderType.Thin;
summaryRange.Style.RightBorder.Type = BorderType.Thin;
summaryRange.Style.SetBorderColor("#0070C0"); // Blue borders
$vbLabelText   $csharpLabel

O IronXL suporta vários tipos de borda, incluindo fina, média, grossa, dupla, pontilhada e tracejada. Cada lado da borda pode ser estilizado independentemente.


How Do I Use Excel Formulas in C#?

IronXL oferece suporte robusto para fórmulas com cálculo automático:

// Use built-in aggregation functions for ranges
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();

// Assign calculated values to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;

// Or use Excel formulas directly
workSheet["A12"].Formula = "=SUM(A2:A11)";
workSheet["B12"].Formula = "=AVERAGE(B2:B11)";
workSheet["C12"].Formula = "=MAX(C2:C11)";
workSheet["D12"].Formula = "=MIN(D2:D11)";

// Complex formulas with multiple functions
workSheet["E12"].Formula = "=IF(SUM(E2:E11)>50000,\"Over Budget\",\"On Track\")";
workSheet["F12"].Formula = "=SUMIF(F2:F11,\">5000\")";

// Percentage calculations
workSheet["G12"].Formula = "=G11/SUM(G2:G11)*100";
workSheet["G12"].FormatString = "0.00%";

// Ensure all formulas calculate
workSheet.EvaluateAll();
// Use built-in aggregation functions for ranges
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();

// Assign calculated values to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;

// Or use Excel formulas directly
workSheet["A12"].Formula = "=SUM(A2:A11)";
workSheet["B12"].Formula = "=AVERAGE(B2:B11)";
workSheet["C12"].Formula = "=MAX(C2:C11)";
workSheet["D12"].Formula = "=MIN(D2:D11)";

// Complex formulas with multiple functions
workSheet["E12"].Formula = "=IF(SUM(E2:E11)>50000,\"Over Budget\",\"On Track\")";
workSheet["F12"].Formula = "=SUMIF(F2:F11,\">5000\")";

// Percentage calculations
workSheet["G12"].Formula = "=G11/SUM(G2:G11)*100";
workSheet["G12"].FormatString = "0.00%";

// Ensure all formulas calculate
workSheet.EvaluateAll();
$vbLabelText   $csharpLabel

A classe Range fornece métodos como Sum(), Avg(), Max() e Min() para cálculos rápidos. Para cenários mais complexos, use a propriedade Formula para definir fórmulas do Excel diretamente.

{t:(Prefira os métodos integrados do IronXL .Sum(), .Avg(), .Max() e .Min() em vez de strings de fórmula brutas ao trabalhar com intervalos — eles são seguros em relação aos tipos e evitam erros de sintaxe de fórmula.)}


Como configuro as propriedades da planilha e de impressão?

Utilize o IronXL para proteger planilhas individuais, congelar linhas e colunas e definir opções de formato de impressão.

Como posso configurar as propriedades da planilha?

Proteja as planilhas e controle as opções de visualização:

// Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123");

// Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1); // Freeze first row
// workSheet.CreateFreezePane(1, 1); // Freeze first row and column

// Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible; // or Hidden, VeryHidden

// Configure gridlines and headers
workSheet.ShowGridLines = true;
workSheet.ShowRowColHeaders = true;

// Set zoom level for better viewing
workSheet.Zoom = 85; // 85% zoom
// Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123");

// Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1); // Freeze first row
// workSheet.CreateFreezePane(1, 1); // Freeze first row and column

// Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible; // or Hidden, VeryHidden

// Configure gridlines and headers
workSheet.ShowGridLines = true;
workSheet.ShowRowColHeaders = true;

// Set zoom level for better viewing
workSheet.Zoom = 85; // 85% zoom
$vbLabelText   $csharpLabel

A proteção da planilha impede modificações acidentais, enquanto o congelamento de painéis mantém linhas ou colunas importantes visíveis durante a rolagem.

Planilha do Excel mostrando a linha de cabeçalho congelada com dados de orçamento mensal.

**Figura 7** – *A linha de cabeçalho congelada permanece visível durante a rolagem.*

Diálogo de proteção do Excel que exige senha para modificar a planilha protegida.

**Figura 8** – *A proteção por senha impede edições não autorizadas.*

Como configuro as definições de página e impressão?

Configure opções de impressão profissional através do IronXL:

using IronXl.Printing;

// Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12");

// Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape;

// Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4;

// Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5;
workSheet.PrintSetup.RightMargin = 0.5;
workSheet.PrintSetup.TopMargin = 0.75;
workSheet.PrintSetup.BottomMargin = 0.75;

// Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3;
workSheet.PrintSetup.FooterMargin = 0.3;

// Scale to fit on one page
workSheet.PrintSetup.FitToPage = true;
workSheet.PrintSetup.FitToHeight = 1;
workSheet.PrintSetup.FitToWidth = 1;

// Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report";
workSheet.Footer.Left = DateTime.Now.ToShortDateString();
workSheet.Footer.Right = "Page &P of &N"; // Page numbering
using IronXl.Printing;

// Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12");

// Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape;

// Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4;

// Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5;
workSheet.PrintSetup.RightMargin = 0.5;
workSheet.PrintSetup.TopMargin = 0.75;
workSheet.PrintSetup.BottomMargin = 0.75;

// Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3;
workSheet.PrintSetup.FooterMargin = 0.3;

// Scale to fit on one page
workSheet.PrintSetup.FitToPage = true;
workSheet.PrintSetup.FitToHeight = 1;
workSheet.PrintSetup.FitToWidth = 1;

// Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report";
workSheet.Footer.Left = DateTime.Now.ToShortDateString();
workSheet.Footer.Right = "Page &P of &N"; // Page numbering
$vbLabelText   $csharpLabel

A classe PrintSetup oferece opções abrangentes de configuração de impressão que correspondem às configurações de impressão do Excel.

Pré-visualização de impressão do Excel mostrando a orientação paisagem e as configurações de tamanho de papel A4.

**Figura 9** – *Pré-visualização de impressão com orientação paisagem e margens personalizadas*


Como faço para salvar minha planilha do Excel?

Salve sua planilha em vários formatos:

// Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx");

// Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls");

// Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv");

// Save as JSON for web applications
workBook.SaveAsJson("Budget.json");

// Save to stream for web downloads or cloud storage
using (var stream = new MemoryStream())
{
    workBook.SaveAs(stream);
    byte[] excelData = stream.ToArray();
    // Send to client or save to cloud
}

// Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8);
// Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx");

// Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls");

// Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv");

// Save as JSON for web applications
workBook.SaveAsJson("Budget.json");

// Save to stream for web downloads or cloud storage
using (var stream = new MemoryStream())
{
    workBook.SaveAs(stream);
    byte[] excelData = stream.ToArray();
    // Send to client or save to cloud
}

// Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8);
$vbLabelText   $csharpLabel

O IronXL suporta vários formatos de exportação , incluindo XLSX, XLS, CSV, TSV e JSON. O método SaveAs determina automaticamente o formato a partir da extensão do arquivo.

  • XLSX / XLS : Formato Excel completo com formatação, fórmulas e várias planilhas
  • CSV : Texto simples para intercâmbio de dados — exporta uma planilha por arquivo
  • JSON : Saída estruturada para APIs web e pipelines de dados
  • Stream : Para saída em memória — útil para downloads da web ou armazenamento em nuvem.

Resumo

Este tutorial demonstrou como criar arquivos Excel em C# sem dependências do Microsoft Office usando o IronXL . Você aprendeu operações essenciais do Excel, incluindo criação de planilhas, manipulação de células, formatação, uso de fórmulas e várias opções de salvamento. A API intuitiva do IronXL simplifica a automação do Excel para desenvolvedores .NET.

Para recursos mais avançados, explore a mesclagem de células e a criação de gráficos . Pronto para usar o IronXL em produção? Inicie seu teste gratuito ou veja as opções de licenciamento .

Qual o próximo passo?

Agora que você pode criar arquivos do Excel em C#, explore estes recursos relacionados do IronXL:


Tutorial de Acesso Rápido

Logotipo do Visual Studio
### Baixe este tutorial como código-fonte em C#

O código-fonte completo em C# para a criação de arquivos Excel está disponível como um arquivo de projeto do Visual Studio.

Download
### Explore este tutorial no GitHub

O código-fonte deste projeto está disponível em C# e VB.NET no GitHub.

Use este código como uma maneira fácil de começar a criar arquivos do Excel em apenas alguns minutos. O projeto está salvo como um projeto do Microsoft Visual Studio, mas é compatível com qualquer IDE .NET.

Criar arquivos do Excel em C# no GitHub
Logotipo do GitHub
ícone de documentação da API
### Leia a Referência da API do IronXL.

Explore a Referência da API do IronXL, que detalha todos os recursos, namespaces, classes, métodos e propriedades para manipulação completa do Excel em .NET.

Consulte a Referência da API.

Perguntas frequentes

Como posso criar arquivos Excel em C# sem usar Interop?

Você pode criar arquivos Excel sem Interop usando o IronXL, que fornece uma API simples: WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX) . Essa abordagem funciona em qualquer plataforma .NET sem exigir a instalação do Microsoft Office.

Quais plataformas são suportadas pela criação de arquivos Excel com C#?

O IronXL oferece suporte à criação de arquivos Excel em .NET 10, .NET 9, .NET 8, .NET Core, .NET Framework 4.6.2+, executados em ambientes Windows, macOS, Linux, Docker, Azure e AWS.

Como faço para instalar uma biblioteca C# para geração de planilhas Excel?

Instale o IronXL através do Gerenciador de Pacotes NuGet no Visual Studio, usando o comando PM> Install-Package IronXl.Excel , ou faça o download diretamente do nuget.org.

Como faço para criar uma nova planilha do Excel programaticamente?

Crie uma pasta de trabalho usando o IronXL com WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX) e, em seguida, adicione planilhas usando workbook.CreateWorkSheet("SheetName") .

Como posso definir valores de células em uma planilha do Excel usando C#?

Defina valores de células no IronXL usando sintaxe intuitiva: worksheet["A1"].Value = "Hello World" ou defina intervalos: worksheet["A1:A10"].Value = 100 .

Posso aplicar formatação a células do Excel programaticamente?

Sim, o IronXL suporta formatação abrangente, incluindo cores de fundo ( cell.Style.SetBackgroundColor("#FF0000") ), bordas, fontes e formatos de número.

Como faço para usar fórmulas do Excel em C#?

Aplique fórmulas usando a propriedade Formula do IronXL: worksheet["A1"].Formula = "=SUM(B1:B10)" , ou use métodos integrados como range.Sum() , range.Avg() .

Como posso proteger uma planilha do Excel com uma senha?

Proteja as planilhas no IronXL usando worksheet.ProtectSheet("YourPassword") para evitar modificações não autorizadas.

Como faço para configurar as opções de impressão para arquivos do Excel?

Defina as propriedades de impressão usando PrintSetup do IronXL: worksheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape e worksheet.SetPrintArea("A1:Z100") .

Como faço para salvar uma planilha do Excel em formatos diferentes?

Salve planilhas usando o método SaveAs do IronXL: workbook.SaveAs("file.xlsx") para XLSX, ou use SaveAsCsv() , SaveAsJson() para outros formatos.

Como faço para preencher uma planilha do Excel com dados de um banco de dados?

Use o IronXL para preencher planilhas buscando dados de um banco de dados e definindo-os em células usando métodos como worksheet["A1"].Value = dataFromDatabase .

Como posso implementar o congelamento de painéis em uma planilha do Excel usando C#?

Congele painéis em planilhas usando IronXL com worksheet.FreezePanes(1, 1) para bloquear a linha superior e a coluna mais à esquerda para facilitar a navegação.

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

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 12
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Tutorials.php
Line: 29
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 19
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Tutorials.php
Line: 29
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

Pronto para começar?
Nuget Downloads 1,890,100 | Versão: 2026.3 acaba de ser lançado

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 17
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/tutorials/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Tutorials.php
Line: 29
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 24
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/tutorials/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Tutorials.php
Line: 29
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronXl.Excel
executar um exemplo Veja seus dados se transformarem em uma planilha.