Ir para o conteúdo do rodapé
COMPARAR COM OUTROS COMPONENTES
Comparação entre IronXL e Microsoft Office Interop Excel

Uma comparação entre IronXL e Microsoft Office Interop Excel

As ferramentas MS Office, como Word, Excel, PowerPoint, etc., são muito populares e amplamente usadas em todos os tipos de negócios. A criação de arquivos de relatório no formato de arquivo Excel é um recurso que muitos usuários precisam em seus aplicativos de software, e agora há uma maneira definitiva de incluir esse recurso em aplicativos de software usando as diferentes bibliotecas disponíveis.

Neste artigo, vamos discutir e comparar como trabalhar programaticamente com arquivos do Microsoft Excel em C# usando as duas bibliotecas mais populares, IronXL e Microsoft Office Excel Interop.

IronXL e Microsoft Excel Interop ambos fornecem métodos para criar, editar e ler documentos Excel em frameworks .NET. The next question is to decide which C# Excel library is best suited to your project. Este artigo o ajudará a decidir a melhor opção para suas aplicações.

Vamos primeiro ver o que ambas as bibliotecas têm a oferecer e depois passar para a comparação em si.

A Biblioteca IronXL

IronXL é uma biblioteca .NET que facilita a leitura e edição de documentos do Microsoft Excel em C#. IronXl.Excel é uma biblioteca de software .NET independente para ler uma ampla gama de formatos de planilhas. Não requer a instalação do Microsoft Excel, nem depende do Interop.

IronXL é uma API C# intuitiva que permite ler, editar e criar arquivos de planilhas Excel em .NET com desempenho extremamente rápido. IronXL suporta totalmente .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS e Azure.

IronXL é uma biblioteca líder de planilhas Excel para C# no .NET core e .NET framework.

Documentação & Suporte

Conjunto de Recursos do IronXL

  • Carregar, Ler e Editar Dados — a partir de XLS/XLSX/CSV/TSV
  • Salvando e Exportando — para XLS/XLSX/CSV/TSV/JSON
  • Objetos System.Data — Trabalhe com planilhas do Excel como objetos System.Data.DataSet e System.Data.DataTable.
  • Fórmulas — funciona com fórmulas Excel. As fórmulas são recalculadas toda vez que uma planilha é editada.
  • Intervalos — Sintaxe de planilha fácil de usar ["A1:B10"]. Combine e crie intervalos de forma intuitiva.
  • Ordenação — Ordenar Intervalos, Colunas e Linhas.
  • Estilização — Estilos visuais de células, fonte, tamanho, padrão de fundo, borda, alinhamento e formatos numéricos.

Objetos de Interop do Microsoft Office Excel

O namespace Microsoft.Office.Interop.Excel fornece métodos para interagir com o aplicativo Microsoft Excel em C# e Visual Basic. Podemos criar novos livros de Excel, planilhas de Excel, exibir dados em folhas existentes, modificar conteúdos existentes de folhas do Excel e muito mais com este namespace.

As classes e interfaces em Microsoft.Office.Interop.Excel fornecem suporte para interoperabilidade entre o modelo de objeto COM de arquivos Microsoft Excel e aplicações gerenciadas que automatizam arquivos xls ou xlsx.

A linguagem de programação C# inclui recursos que facilitam o trabalho com objetos da API Interop do Microsoft Office. Os novos recursos incluem argumentos nomeados e opcionais, um novo tipo chamado dynamic, e a capacidade de passar argumentos para parâmetros de referência em métodos COM como se fossem parâmetros de valor. Isso faz com que seja uma escolha melhor para trabalhar com objetos COM e Interop.

Nota: Os objetos de Interop do Microsoft Excel precisam que o Microsoft Excel esteja instalado no computador

O restante do artigo segue da seguinte forma:

  1. Crie uma Aplicação de Console
  2. Instalação da Biblioteca C# IronXL
  3. Instalação do Microsoft Office Interop Excel
  4. Criar um Novo Livro e Folha de Excel
  5. Ler arquivos Excel
  6. Trabalhando com Intervalos de Valores em arquivos Excel
  7. Trabalhando com fórmulas do Excel
  8. Licenciamento
  9. Resumo e Conclusão

1. Criar um Aplicativo de Console

Use os seguintes passos para criar um Aplicativo de Console:

  • Inicie o IDE do Visual Studio 2022.
  • Clique em "Criar novo projeto".
  • Na página "Criar novo projeto", selecione C# na lista suspensa de idiomas, Windows na lista de Plataformas e Console na lista de "Tipos de projeto".
  • Selecione Console App (.NET Framework) dos modelos de projeto exibidos.
Criar Projeto - Aplicativo de Console
  • Clique em Próximo.
  • Na tela de Informações Adicionais, especifique a versão do Framework que você gostaria de usar. Usaremos o .NET Framework 4.8 neste exemplo.
Criar Projeto - .NET Framework
  • Clique em Criar para completar o processo.

Agora o projeto está criado e estamos quase prontos para testar as bibliotecas. No entanto, ainda precisamos instalá-las e integrá-las em nosso projeto. Vamos instalar o IronXL primeiro.

2. Instalação da Biblioteca IronXL C

Você pode baixar e instalar a biblioteca IronXL usando os seguintes métodos:

  1. Usando o Visual Studio com pacotes NuGet.
  2. Baixar o Pacote NuGet diretamente.
  3. Instalar manualmente com o DLL.

Vamos dar uma olhada mais de perto em cada um.

2.1. Usando o Visual Studio com pacotes NuGet

O Visual Studio fornece o Gerenciador de Pacotes NuGet para instalar pacotes NuGet em seus projetos. Você pode acessá-lo através do Menu Projeto, ou clicando com o botão direito do mouse no seu projeto no Solution Explorer.

Selecione Gerenciar Pacote NuGet
  • Agora, na aba de navegação -> procure por IronXl.Excel -> Instalar
Procure por IronXL
  • E pronto.
Procurar Microsoft Excel Interop

3.2. Usando o Console do Gerenciador de Pacotes NuGet

Outra maneira de baixar e instalar a Biblioteca C# Microsoft.Office.Interop.Excel é fazer uso dos seguintes passos para instalar o pacote NuGet através do Prompt de Comando do Desenvolvedor.

  1. Abra o Prompt de Comando do Desenvolvedor — geralmente encontrado na pasta do Visual Studio.
  2. Digite o seguinte comando:

    PM> Install-Package Microsoft.Office.Interop.Excel
    PM> Install-Package Microsoft.Office.Interop.Excel
    SHELL
  3. Pressione Enter.
  4. Isso irá baixar e instalar o pacote.
  5. Recarregue seu projeto do Visual Studio e comece a usar.

3.3. Adicione as diretivas de uso necessárias

  1. No Solution Explorer, clique com o botão direito no arquivo Program.cs e, em seguida, clique em Ver Código.
  2. Adicione a seguinte diretiva de uso ao topo do arquivo de código:

    using Excel = Microsoft.Office.Interop.Excel;
    using Excel = Microsoft.Office.Interop.Excel;
    $vbLabelText   $csharpLabel

4. Criar um Novo Livro e Folha de Excel

Um workbook é um arquivo Excel contendo múltiplas planilhas com linhas e colunas. Ambas as bibliotecas fornecem a facilidade de criar um novo workbook e planilhas Excel. Vamos dar uma olhada no código passo a passo.

4.1. Um Novo Livro e Folha de Excel usando IronXL

Não poderia ser mais fácil criar um novo Livro de Excel usando IronXL! Apenas uma linha de código! Sim, realmente. Adicione o seguinte código à sua função estática void Main no arquivo Program.cs:

// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
$vbLabelText   $csharpLabel

Ambos os formatos de arquivo XLS (versão de arquivo do Excel mais antiga) e XLSX (versão de arquivo atual e mais nova) podem ser criados com IronXL.

E, é ainda mais fácil criar uma Planilha padrão:

// Create a new worksheet
var worksheet = workbook.CreateWorkSheet("IronXL Features");
// Create a new worksheet
var worksheet = workbook.CreateWorkSheet("IronXL Features");
$vbLabelText   $csharpLabel

Você pode agora usar a variável worksheet para definir valores de células e fazer quase tudo que um arquivo Excel pode fazer.

4.2. Um Novo Livro e Folha de Excel usando Microsoft.Office.Interop.Excel

Para criar um arquivo de Excel usando Microsoft.Office.Interop, é necessário que o Microsoft Excel esteja instalado. Portanto, precisamos verificar se o Microsoft Excel está instalado na máquina host — caso contrário, isso irá simplesmente retornar uma exceção que precisa ser tratada. Os exemplos de código a seguir permitem que você verifique uma instalação do aplicativo Excel e crie livros e folhas de Excel:

Verifique se o Microsoft Excel está instalado:

// Start Excel and get Application object.
Excel.Application xlApp = new Excel.Application();  

// Check if Excel is installed  
if (xlApp == null)  
{  
    Console.WriteLine("Excel is not installed in the system...");
    return;  
}
// Start Excel and get Application object.
Excel.Application xlApp = new Excel.Application();  

// Check if Excel is installed  
if (xlApp == null)  
{  
    Console.WriteLine("Excel is not installed in the system...");
    return;  
}
$vbLabelText   $csharpLabel

Criar Livro e Folha de Trabalho:

// Create Workbook and Worksheet
object misValue = System.Reflection.Missing.Value;  
Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
// Create Workbook and Worksheet
object misValue = System.Reflection.Missing.Value;  
Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
$vbLabelText   $csharpLabel

Até agora, olhando para ambos os códigos, a vantagem está com o IronXL sobre o Office Interop Excel. IronXL usa apenas uma linha de código para poder trabalhar com arquivos Excel, sem complicações e dependências adicionais.

5. Ler Arquivos Excel

Ambas as bibliotecas podem abrir e ler documentos Excel existentes. Vamos dar uma olhada no exemplo de código.

5.1. Ler Arquivos Excel usando IronXL

A classe WorkBook do IronXL representa uma planilha Excel. Para abrir um arquivo Excel usando C#, usamos WorkBook.Load e especificamos o caminho do arquivo Excel (.xlsx). O seguinte código de uma linha é usado para abrir o arquivo para leitura:

// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
$vbLabelText   $csharpLabel

Cada WorkBook pode ter múltiplos objetos WorkSheet. Estes representam as planilhas no documento Excel. Se o workbook contém planilhas, recupere-as pelo nome da seguinte forma:

// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
$vbLabelText   $csharpLabel

Código para leitura dos valores das células:

// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
$vbLabelText   $csharpLabel

5.2. Ler Arquivos Excel usando Microsoft.Office.Interop.Excel

Isso também usa uma linha de código para abrir um livro e folha. O código é o seguinte:

Excel.Application xlApp = new Excel.Application();  

// Load WorkBook
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);  

// Open Sheet for reading
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
Excel.Application xlApp = new Excel.Application();  

// Load WorkBook
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);  

// Open Sheet for reading
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
$vbLabelText   $csharpLabel

Código para leitura dos valores das células:

// Get the entire range of cells
Excel.Range xlRange = xlWorkSheet.UsedRange;

// Reading first 10 rows with two columns
for (int rowCount = 1; rowCount <= 10; rowCount++)  
{  
    string firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);  
    string secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);  

    Console.WriteLine(firstValue + "\t" + secondValue);  
}
// Get the entire range of cells
Excel.Range xlRange = xlWorkSheet.UsedRange;

// Reading first 10 rows with two columns
for (int rowCount = 1; rowCount <= 10; rowCount++)  
{  
    string firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);  
    string secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);  

    Console.WriteLine(firstValue + "\t" + secondValue);  
}
$vbLabelText   $csharpLabel

No entanto, verificar a instalação do Excel e criar sua instância é uma parte integral.

6. Trabalhando com Intervalo de Valores em Arquivos Excel

6.1. Trabalhando com Intervalo de Valores Usando IronXL

No IronXL, com uma linha de código, podemos obter o intervalo de valores de células específicas. Em seguida, usando um loop, cada valor de célula pode ser lido ou editado. O código é o seguinte:

// Load the workbook and get the first worksheet
WorkBook workbook = WorkBook.Load("test.xls");
WorkSheet sheet = workbook.WorkSheets.First();

// This is how we get range from Excel worksheet
var range = sheet["A2:A8"];
// This is how we can iterate over our range and read or edit any cell
foreach (var cell in range)
{
    Console.WriteLine(cell.Value);
}
// Load the workbook and get the first worksheet
WorkBook workbook = WorkBook.Load("test.xls");
WorkSheet sheet = workbook.WorkSheets.First();

// This is how we get range from Excel worksheet
var range = sheet["A2:A8"];
// This is how we can iterate over our range and read or edit any cell
foreach (var cell in range)
{
    Console.WriteLine(cell.Value);
}
$vbLabelText   $csharpLabel

6.2. Trabalhando com Intervalo de Valores Usando Microsoft.Office.Interop.Excel

Isso também usa uma linha de código para obter o intervalo de valores das células. As células podem então ser atualizadas com os valores necessários. O código é o seguinte:

Excel.Application xlApp = new Excel.Application();  
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

// Get range of values and updating their format
var range = xlWorkSheet.get_Range("A1", "D1");
range.NumberFormat = "$0.00";
Excel.Application xlApp = new Excel.Application();  
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

// Get range of values and updating their format
var range = xlWorkSheet.get_Range("A1", "D1");
range.NumberFormat = "$0.00";
$vbLabelText   $csharpLabel

7. Trabalhando com Fórmulas do Excel

Fórmulas do Excel constituem a parte mais importante ao trabalhar com arquivos Excel. Ambas as bibliotecas oferecem a capacidade de trabalhar com fórmulas e aplicá-las às células com facilidade.

7.1. Trabalhando com Fórmulas do Excel usando IronXL

Após carregar o livro de trabalho e a planilha, o seguinte exemplo de código pode ser utilizado para fazer alterações nas fórmulas ou aplicá-las a células específicas. O código é o seguinte:

// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
$vbLabelText   $csharpLabel

Você também pode recuperar fórmulas e seus valores.

// Get Formulas
// Get the formula's calculated value.  e.g. "52"
string formulaValue = worksheet["G30"].Value;

// Get the formula as a string. e.g. "Max(C3:C7)"
string formulaString = worksheet["G30"].Formula;

// Save your changes with updated formulas and calculated values.
workbook.Save();
// Get Formulas
// Get the formula's calculated value.  e.g. "52"
string formulaValue = worksheet["G30"].Value;

// Get the formula as a string. e.g. "Max(C3:C7)"
string formulaString = worksheet["G30"].Formula;

// Save your changes with updated formulas and calculated values.
workbook.Save();
$vbLabelText   $csharpLabel

7.2. Trabalhando com Fórmulas do Excel usando Microsoft.Office.Interop.Excel

Da mesma forma, após carregar o livro de trabalho e a planilha, o seguinte código pode ser usado para trabalhar em fórmulas do Excel. O exemplo de código é o seguinte:

// Get range of values and updating their format
var range1 = xlWorkSheet.get_Range("A1", "D1");
var range2 = xlWorkSheet.get_Range("C2", "C6");

// Set Formula
range1.Formula = "=RAND()*100000";
range2.Formula = "=A2 & \" \" & B2";
// Get range of values and updating their format
var range1 = xlWorkSheet.get_Range("A1", "D1");
var range2 = xlWorkSheet.get_Range("C2", "C6");

// Set Formula
range1.Formula = "=RAND()*100000";
range2.Formula = "=A2 & \" \" & B2";
$vbLabelText   $csharpLabel

8. Licenciamento

IronXL é uma biblioteca C# Excel abertamente comercial. É gratuito para desenvolvimento e pode sempre ser licenciado para implantação comercial. Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. Todas as licenças incluem garantia de reembolso de 30 dias, um ano de suporte e atualizações do produto, validade para desenvolvimento/teste/produção e também uma licença permanente (compra única). O pacote Lite começa a partir de $799.

Para o Microsoft Office Interop Excel, aplicativos utilizando este arquivo DLL não precisam de uma licença separada nem para uso único nem para uso comercial. Para que qualquer solução funcione com um aplicativo do Office, os aplicativos do Microsoft Office devem estar instalados e licenciados na máquina onde a solução é executada. O DLL sempre estará presente em uma máquina onde o aplicativo Office está instalado, e será registrado lá. Ao mesmo tempo, a montagem principal de interop (PIAs) necessária para soluções .NET usando o 'interop' também será instalada no GAC.

9. Resumo e Conclusão

Resumo

Ler e criar arquivos Excel (XLS, XLSX, e CSV) em C# e todas as outras linguagens .NET é fácil usando a biblioteca de software IronXL da Iron Software. IronXL não requer que o Excel esteja instalado em seu servidor ou Interop. IronXL fornece uma API mais rápida e intuitiva do que Microsoft.Office.Interop.Excel. IronXL funciona no .NET Core 2, Framework 4.5, Azure, Mono, e, Mobile e Xamarin.

Microsoft Office Interop (Excel Automation) é uma opção ao criar/ler arquivos Excel (XLS, XLSX, CSV) de aplicações C# ou VB.NET. Requer que todas as máquinas clientes tenham a mesma versão do Microsoft Excel instalada, e funciona apenas em sistemas operacionais Windows.

Conclusão

Aqui, o IronXL tem uma clara vantagem sobre o Microsoft.Office.Interop.Excel, pois não requer que a aplicação Microsoft Office Excel esteja instalada na máquina local ou do servidor para funcionar. Além disso, ao usar a Automação Excel, o Microsoft Excel é carregado em segundo plano, usando muitos MBs e carregando um grande número de arquivos e DLLs em comparação ao IronXL. O IronXL tem uma API mais rápida e intuitiva do que a de Microsoft.Office.Interop.Excel.

Aplicações do Microsoft Office (incluindo o Excel) foram projetadas como aplicações de interface do usuário, e, portanto, a API é muito lenta. A Microsoft não recomenda o uso de Automação Excel (ou qualquer Interop do Office) no servidor. Neste caso, com todos os seus recursos robustos, o IronXL é a melhor escolha para integração em aplicações de software.

ObserveMicrosoft Office é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, aprovado, ou patrocinado pelo Microsoft Office. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.

Perguntas frequentes

Como posso criar e editar arquivos do Excel em C# sem o Microsoft Excel instalado?

Você pode usar o IronXL para criar e editar arquivos do Excel em C# sem precisar ter o Microsoft Excel instalado em sua máquina. O IronXL fornece uma biblioteca independente que funciona com vários formatos de arquivo do Excel e é compatível com múltiplas plataformas.

Quais são as vantagens de usar o IronXL em vez do Microsoft Office Interop para operações com o Excel?

O IronXL oferece diversas vantagens em relação ao Microsoft Office Interop, como não exigir a instalação do Excel, suportar múltiplas plataformas, incluindo .NET Core e Azure, e fornecer uma API mais rápida e intuitiva.

Posso usar o IronXL para ler e gravar arquivos Excel em diferentes formatos?

Sim, o IronXL suporta a leitura e gravação de vários formatos de arquivo Excel, incluindo XLS, XLSX, CSV e TSV, tornando-o versátil para diferentes necessidades de aplicação.

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

O IronXL é totalmente compatível com .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS e Azure, oferecendo flexibilidade para diferentes ambientes de desenvolvimento.

Como o IronXL lida com fórmulas do Excel?

O IronXL permite que os usuários definam e recuperem fórmulas do Excel com facilidade. Ele recalcula as fórmulas automaticamente quando uma planilha é modificada e permite salvar as fórmulas atualizadas e seus valores calculados.

Que tipo de suporte está disponível ao usar o IronXL em um projeto?

A IronXL oferece amplo suporte, incluindo documentação da API online, trechos de código para começar, tutoriais, exemplos no GitHub e suporte profissional da Equipe Iron.

Quais são as limitações do uso do Microsoft Office Interop para Excel em servidores?

A Microsoft não recomenda o uso da Automação do Excel ou qualquer recurso de Interoperabilidade do Office em servidores devido a problemas de desempenho e à necessidade de instalação do Microsoft Excel, o que pode gerar dificuldades de manutenção.

Como o IronXL melhora o desempenho em comparação com as bibliotecas de interoperabilidade tradicionais do Excel?

O IronXL oferece uma API mais rápida e eficiente do que o Microsoft Office Interop Excel, que foi projetado como um aplicativo de interface gráfica e tende a ser mais lento e a consumir mais recursos.

O IronXL é adequado para uso comercial em aplicações de software?

Sim, o IronXL pode ser licenciado para uso comercial com diversas opções de licenciamento, incluindo licenças para projeto único, desenvolvedor e global, todas com garantia de reembolso de 30 dias.

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