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

Como criar arquivos Excel em C#: Interop vs IronXL

Introdução

Criar arquivos Excel programaticamente é um requisito fundamental em muitos aplicativos C#. Embora Microsoft.Office.Interop. A abordagem tradicional para criar arquivos Excel em C# usando Interop tenha sido Excel. Não entanto, vem com limitações, como exigir que o Microsoft Excel esteja instalado e depender de Primary Interop Assemblies. Alternativas modernas de biblioteca Excel como IronXL permitem criar um livro de Excel, trabalhar com várias planilhas e gerar arquivos XLSX ou CSV sem o Microsoft Office. Este artigo compara como diferentes bibliotecas lidam com a criação de arquivos Excel, fornecendo código de exemplo e orientação para desenvolvedores .NET.

Visão geral da comparação rápida

Recurso

Interoperabilidade do Excel

IronXL

EPPlus

XML fechado

NPOI

GemBox

Aspose

Instalação do Excel Necessária

Sim

Não

Não

Não

Não

Não

Não

Implantação de servidor

Não Recomendado

Sim

Sim

Sim

Sim

Sim

Sim

Suporte da plataforma

Apenas Windows

Multiplataforma

Multiplataforma

Multiplataforma

Multiplataforma

Multiplataforma

Multiplataforma

Suporte a XLS

Sim

Sim

Não

Não

Sim

Sim

Sim

Suporte a XLSX

Sim

Sim

Sim

Sim

Sim

Sim

Sim

Curva de Aprendizagem

Íngreme

Fácil

Fácil

Fácil

Moderado

Fácil

Moderado

Licença Comercial

Licença Office

A partir de $liteLicense

A partir de €449

Gratuito (MIT)

Gratuito (Apache)

A partir de €590

A partir de $999

Eficiência da memória

Ruim

Excelente

Bom

Bom

Ruim

Excelente

Bom

Nãota: "Interoperabilidade do Excel" requer que o Microsoft Excel esteja instalado, juntamente com o Primary Interop Assembly. Bibliotecas alternativas, como IronXL, permitem criar arquivos Excel, livros e planilhas sem exigir Office, e suportam arquivos xlsx, arquivos CSV e várias planilhas.

Por que Ir Além do Interoperabilidade do Excel?

Microsoft.Office.Interop.Excel alternativas são essenciais porque o Interoperabilidade do Excel requer que o Excel esteja instalado em cada máquina onde sua aplicação é executada. Esta dependência cria desafios de implantação, especialmente para ambientes de servidor onde a Microsoft adverte explicitamente contra a automação do Office. Utilizar Interop sem Excel resulta em exceções, mensagens de aviso ou tentativas falhas de criar um documento Excel programaticamente. As aplicações também sofrem com problemas de dependência de COM, conflitos de versão e fraco desempenho devido ao Excel rodando como um processo em segundo plano.

Bibliotecas modernas de Excel, como o IronXL, eliminam essas questões. Você pode criar arquivos Excel, escrever dados em planilhas, gerar arquivos CSV ou XML, e trabalhar com novos workbooks Excel sem depender do Office, do objeto de aplicação do Excel, ou do Primary Interop Assembly. Desenvolvedores também podem usar o Visual Studio, Visual Basic, ou projetos de aplicação console para implementar a automação do Excel em ambientes Windows ou multiplataforma.

Comece com a versão de teste gratuita do IronXL para eliminar completamente essas dependências.

Criando Arquivos Excel com Interop

Vamos primeiro examinar a abordagem tradicional usando o Interoperabilidade do Excel:

using Excel = Microsoft.Office.Interop.Excel;
// Create Excel application instance
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
// Add data to cells
worksheet.Cells[1, 1] = "Product";
worksheet.Cells[1, 2] = "Price";
worksheet.Cells[2, 1] = "Widget";
worksheet.Cells[2, 2] = 9.99;
// Save and cleanup
workbook.SaveAs(@"C:\temp\products.xlsx");
workbook.Close();
excelApp.Quit();
// Release COM objects
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
// Create Excel application instance
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
// Add data to cells
worksheet.Cells[1, 1] = "Product";
worksheet.Cells[1, 2] = "Price";
worksheet.Cells[2, 1] = "Widget";
worksheet.Cells[2, 2] = 9.99;
// Save and cleanup
workbook.SaveAs(@"C:\temp\products.xlsx");
workbook.Close();
excelApp.Quit();
// Release COM objects
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
$vbLabelText   $csharpLabel

Este código requer a instalação do Excel, limpeza manual de objetos COM, e não funcionará em plataformas que não sejam Windows. A complexidade aumenta ao lidar com múltiplas planilhas, salvar em diferentes formatos de arquivo, ou trabalhar em um ambiente de servidor. É por isso que muitos desenvolvedores buscam uma biblioteca Excel que não requeira o Microsoft Office.

Como o IronXL se Compara?

IronXL elimina essas complicações com uma API moderna e intuitiva para automação de Excel sem Microsoft Office:

using IronXL;
// Create workbook without Excel
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");
// Add data using familiar syntax
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Price";
worksheet["A2"].Value = "Widget";
worksheet["B2"].Value = 9.99;
// Apply formatting
worksheet["A1:B1"].Style.Font.Bold = true;
worksheet["B2"].FormatString = "$#,###";
// Save with one line
workbook.SaveAs("products.xlsx");
using IronXL;
// Create workbook without Excel
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");
// Add data using familiar syntax
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Price";
worksheet["A2"].Value = "Widget";
worksheet["B2"].Value = 9.99;
// Apply formatting
worksheet["A1:B1"].Style.Font.Bold = true;
worksheet["B2"].FormatString = "$#,###";
// Save with one line
workbook.SaveAs("products.xlsx");
$vbLabelText   $csharpLabel

Como Criar Arquivos Excel em C#: Interop vs IronXL: Figura 1 - Saída do IronXL

IronXL permite que você crie um arquivo de Excel, novo workbook, e múltiplas planilhas programaticamente. Você pode escrever dados, exibir dados, e manipular arquivos XLS, XLSX, CSV ou XML sem que o Microsoft Excel esteja instalado ou referenciar o Primary Interop Assembly. Isso o torna uma biblioteca de Excel totalmente gerenciada, adequada for .NET Framework, .NET Core, aplicações de console, e ambientes multiplataforma.

Porque o IronXL está disponível via pacote NuGet, você pode adicioná-lo diretamente ao seu projeto no Visual Studio sem se preocupar em instalar o Microsoft Office. Não há necessidade de gerenciar o objeto aplicação do Excel ou liberar objetos COM manualmente, reduzindo o risco de exceções ou mensagens de aviso. Saiba mais sobre como criar arquivos Excel com IronXL ou explore fórmulas e cálculos Excel.

!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100 101010100010010000101111101010000010100100111101000100010101010100001101010100010111110101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Como Outras Bibliotecas se Comparam?

Implementação EPPlus

EPPlus oferece uma API limpa, mas requer configuração de licença desde a versão 5, como discutido em tópicos do Stack Overflow:

using OfficeOpenXml;
// Set license context (required from v5+)
ExcelPackage.License.SetNãonCommercialPersonal("Test");
using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Products");
    worksheet.Cells[1, 1].Value = "Product";
    worksheet.Cells[1, 2].Value = "Price";
    worksheet.Cells[2, 1].Value = "Widget";
    worksheet.Cells[2, 2].Value = 9.99;
    package.SaveAs(new FileInfo("products.xlsx"));
}
using OfficeOpenXml;
// Set license context (required from v5+)
ExcelPackage.License.SetNãonCommercialPersonal("Test");
using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Products");
    worksheet.Cells[1, 1].Value = "Product";
    worksheet.Cells[1, 2].Value = "Price";
    worksheet.Cells[2, 1].Value = "Widget";
    worksheet.Cells[2, 2].Value = 9.99;
    package.SaveAs(new FileInfo("products.xlsx"));
}
$vbLabelText   $csharpLabel

Como Criar Arquivos Excel em C#: Interop vs IronXL: Figura 2 - Saída do EPPlus

EPPlus permite que você crie planilhas Excel, escreva e exiba dados, e exporte para arquivos XLSX ou CSV. Não entanto, não suporta formatos XLS antigos, e a licença comercial é necessária para uso empresarial. Desenvolvedores que trabalham em .NET Core ou .NET Framework podem integrar EPPlus via pacote NuGet em projetos Visual Studio e aplicações console.

Abordagem XML fechado

[XML fechado](https://github.com/XML fechado/XML fechado) oferece uma solução de código aberto com uma API intuitiva:

using XML fechado.Excel;
using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Products");
    worksheet.Cell("A1").Value = "Product";
    worksheet.Cell("B1").Value = "Price";
    worksheet.Cell("A2").Value = "Widget";
    worksheet.Cell("B2").Value = 9.99;
    workbook.SaveAs("products.xlsx");
}
using XML fechado.Excel;
using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Products");
    worksheet.Cell("A1").Value = "Product";
    worksheet.Cell("B1").Value = "Price";
    worksheet.Cell("A2").Value = "Widget";
    worksheet.Cell("B2").Value = 9.99;
    workbook.SaveAs("products.xlsx");
}
$vbLabelText   $csharpLabel

Como Criar Arquivos Excel em C#: Interop vs IronXL: Figura 3 - Saída do XML fechado

XML fechado suporta arquivos XLSX e planilhas Excel, facilitando a criação de planilhas Excel sem que o Microsoft Office esteja instalado. Funciona em múltiplas planilhas, manipula arquivos CSV e XML, e integra-se em projetos .NET via pacote NuGet.

NPOI para Suporte Legado

NPOI manipula tanto formatos XLS quanto XLSX, mas com uma API mais complexa:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
IWorkbook workbook = new XSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("Products");
IRow headerRow = worksheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Product");
headerRow.CreateCell(1).SetCellValue("Price");
IRow dataRow = worksheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue("Widget");
dataRow.CreateCell(1).SetCellValue(9.99);
using (FileStream file = new FileStream("products.xlsx", FileMode.Create))
{
    workbook.Write(file);
}
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
IWorkbook workbook = new XSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("Products");
IRow headerRow = worksheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Product");
headerRow.CreateCell(1).SetCellValue("Price");
IRow dataRow = worksheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue("Widget");
dataRow.CreateCell(1).SetCellValue(9.99);
using (FileStream file = new FileStream("products.xlsx", FileMode.Create))
{
    workbook.Write(file);
}
$vbLabelText   $csharpLabel

Como Criar Arquivos Excel em C#: Interop vs IronXL: Figura 4 - Saída do NPOI

NPOI permite a criação de planilhas e workbooks Excel programaticamente, suportando múltiplos formatos de arquivo, incluindo arquivos CSV, XLSX e XLS. Não entanto, sua herança Java torna a API menos intuitiva em comparação com outras bibliotecas de Excel em C#.

Fatores de Decisão Chave

Quando Escolher IronXL

IronXL destaca-se em aplicações empresariais que requerem suporte a bibliotecas Excel multiplataforma, recursos abrangentes de Excel, e suporte profissional. Sua API intuitiva reduz o tempo de desenvolvimento quando você precisa criar arquivos Excel sem o Office estar instalado, enquanto o desempenho robusto lida com grandes conjuntos de dados eficientemente. O mecanismo de fórmulas embutido e suporte para múltiplos formatos (XLS, XLSX, CSV, TSV) o tornam versátil para várias necessidades empresariais.

Considerações Alternativas

EPPlus funciona bem para projetos que já utilizam a versão 4.5.3 ou anterior (última versão gratuita) ou aqueles com licenças comerciais existentes do EPPlus. XML fechado é adequado para projetos de código aberto com necessidades básicas de planilha e sem requisitos de gráficos. NPOI continua relevante quando o suporte a XLS é crítico e os custos de licenciamento devem ser minimizados.

Para comparação com outras opções comerciais: GemBox.Spreadsheet oferece recursos semelhantes ao IronXL com preços competitivos, enquanto Aspose.Cells fornece funcionalidades extensas a um preço premium. Não entanto, a combinação de recursos, desempenho e suporte do IronXL muitas vezes oferece o melhor valor para manipulação de Excel em projetos .NET.

Migração de Interop para IronXL

Migrar do Interoperabilidade do Excel para o IronXL segue um padrão simples. Para orientação detalhada, consulte a documentação do IronXL e explore exemplos de código:

  1. Remova as referências COM - Substitua as referências Microsoft.Office.Interop.Excel por IronXL
  2. Simplifique a criação de objetos - Substitua a hierarquia Application/Workbook/Worksheet pela criação direta de WorkBook
  3. Atualize o acesso às células - Converta de Cells[row, col] para a notação worksheet["A1"]
  4. Remova o código de limpeza - Elimine chamadas para Marshal.ReleaseComObject
  5. Teste multiplataforma - Verifique a funcionalidade nas plataformas de implantação alvo

Para migrações complexas envolvendo gráficos do Excel ou formatação condicional, o IronXL proporciona suporte abrangente.

Entendendo as Limitações

É importante notar que Primary Interop Assemblies (PIAs) não podem funcionar sem o Excel instalado - eles são meramente interfaces para objetos COM que requerem o aplicativo Office real. Esse equívoco muitas vezes leva a falhas de implantação ao mover aplicativos para servidores ou tentar automação do Excel sem a instalação do Office.

Em relação à segurança, o IronXL passa por auditorias de segurança regulares e mantém certificação DigiCert, proporcionando proteção em nível empresarial sem as vulnerabilidades associadas às interfaces COM. Para informações detalhadas sobre segurança, visite a documentação de segurança do IronXL.

Conclusão

Embora o Interoperabilidade do Excel tenha servido ao seu propósito em aplicativos de desktop, o desenvolvimento moderno exige alternativas mais flexíveis à biblioteca do Excel. O IronXL oferece a alternativa mais abrangente para criar arquivos Excel sem Interop, combinando facilidade de uso com recursos empresariais e suporte a Excel multiplataforma.

Seja você criando aplicativos em nuvem, trabalhando com contêineres Docker, ou desenvolvendo soluções multiplataforma, selecionar uma biblioteca que não requer a instalação do Excel é crucial para criar aplicativos escaláveis e sustentáveis. Baixe o IronXL para transformar seu fluxo de trabalho de automação de Excel hoje.

Perguntas frequentes

Quais são algumas das limitações do uso do Excel Interop em C#?

A interoperabilidade com o Excel em C# pode ser limitada pela dependência de instalações do Microsoft Excel, por potenciais problemas de desempenho e pela falta de suporte multiplataforma. O IronXL oferece uma alternativa mais eficiente e versátil para manipulação de planilhas.

Por que devo considerar o uso do IronXL em vez do Excel Interop?

O IronXL oferece uma solução mais robusta com suas funcionalidades multiplataforma, desempenho mais rápido e menor consumo de memória. Ele não exige a instalação do Excel no servidor, tornando-o mais adequado para aplicações do lado do servidor.

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

Sim, o IronXL é otimizado para lidar com grandes conjuntos de dados de forma eficiente. Ele oferece melhor desempenho e gerenciamento de memória em comparação com o Excel Interop, tornando-o ideal para processar grandes volumes de dados.

O IronXL é compatível com o .NET Core?

O IronXL é totalmente compatível com o .NET Core, permitindo que os desenvolvedores criem aplicativos que funcionam em diversas plataformas sem depender de instalações do Microsoft Excel.

Quais são as opções de licenciamento para o IronXL?

O IronXL oferece opções flexíveis de licenciamento, incluindo licenças para desenvolvedor individual, equipe e empresa, tornando-o adequado para projetos de diferentes tamanhos e orçamentos.

O IronXL suporta a exportação de dados para formatos Excel?

O IronXL suporta a exportação de dados para vários formatos do Excel, como XLS, XLSX e CSV, proporcionando flexibilidade para diversas necessidades de manipulação e apresentação de dados.

Posso usar o IronXL para geração automatizada de relatórios em Excel?

Sim, o IronXL foi projetado para facilitar a geração automatizada de relatórios em Excel, oferecendo recursos como filtragem de dados, criação de gráficos e processamento de fórmulas para agilizar as tarefas de geração de relatórios.

Como o IronXL garante a precisão dos dados durante as operações no Excel?

O IronXL garante a precisão dos dados com seus recursos confiáveis de processamento de fórmulas e formatação de células, minimizando erros e mantendo a integridade dos dados durante as operações no Excel.

Quais linguagens de programação são suportadas pelo IronXL?

O IronXL foi projetado principalmente para uso com C#, mas também oferece suporte a outras linguagens .NET, tornando-o versátil para desenvolvedores que trabalham dentro do ecossistema .NET.

A IronXL oferece suporte ao cliente?

A IronXL oferece suporte completo ao cliente, incluindo documentação, tutoriais e assistência direta, garantindo que os desenvolvedores possam utilizar a biblioteca de forma eficaz em seus projetos.

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