: Testamos 12 bibliotecas do C# do Excel contra tarefas idênticas: criação de livros de trabalho, leitura de grandes conjuntos de dados, formatação de células e exportação entre plataformas.Este guia abrange tudo, desde opções de código aberto licenciadas pelo MIT a suítes comerciais de nível empresarial, com código lado a lado, benchmarks de desempenho, custos de licenciamento e um quadro de decisão para ajudá-lo a escolher a biblioteca certa para o seu projeto. TL;DR Passamos três semanas executando cada uma das 12 bibliotecas nesta comparação através de cenários de teste idênticos: criando livros de trabalho do zero, lendo conjuntos de dados de 100.000 fileiras, aplicando formatação condicional e exportando para XLSX e CSV em Windows e Linux. Divulgação completa: Nós somos a equipe DevRel por trás , uma das 12 bibliotecas nesta comparação. Dito isto, acreditamos que as avaliações honestas servem a todos melhor do que o marketing spin. Vamos mostrar nossa metodologia, reconhecer nossos preconceitos e deixar que os benchmarks falem por si mesmos. Onde um concorrente realmente supera o IronXL para um determinado caso de uso, vamos dizer isso. Irmão Aqui está o que a paisagem parece em um olhar - então vamos entrar em profundidade em cada biblioteca. // The task every library in this article performs: // Create a workbook → write headers + 3 data rows → save as XLSX // IronXL (3 lines of core logic) using IronXL; WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet ws = wb.CreateWorkSheet("Sales"); ws["A1"].Value = "Product"; ws["B1"].Value = "Revenue"; ws["A2"].Value = "Widget"; ws["B2"].DoubleValue = 14999.99; wb.SaveAs("sales_ironxl.xlsx"); Desempenho do IronXL Vamos mostrar a versão de cada biblioteca desta tarefa abaixo, porque a melhor maneira de avaliar uma API é ler o código. Antes de entrarmos em perfis individuais, uma nota sobre metodologia. Avaliamos cada biblioteca em sete dimensões: (quantas linhas para realizar tarefas comuns), (que tipos de arquivos você pode ler e escrever), (Cartões, pívots e fórmulas) (Escreva velocidade e uso de memória em escala), (Linux, Docker e a nuvem) (custo real, incluindo taxas ocultas) e (cadência de lançamento, tamanho da comunidade, qualidade da documentação).Nenhuma única biblioteca supera todos os sete, o peso que você atribui a cada dimensão determina sua melhor escolha. API ergonomics format support feature depth performance cross-platform support licensing clarity maintenance health Qual biblioteca C# do Excel você deve escolher? a tabela de referência rápida Antes de mergulhar em 12 perfis individuais, aqui está a tabela de comparação. Cada reivindicação nesta tabela é verificada contra a documentação de cada biblioteca e pacote NuGet a partir de fevereiro de 2026. Library License Entry Price XLSX Files XLS Files CSV Files .NET 8 LTS .NET 10 Linux/Docker Charts Pivot Tables Formula Engine NuGet Downloads IronXL Commercial $749/yr ✅ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅ 3M+ EPPlus Commercial $299/yr ✅ ❌ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 80M+ ClosedXML MIT Free ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ ✅ 60M+ NPOI Apache 2.0 Free ✅ ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ 50M+ Aspose.Cells Commercial $1,199/yr ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 20M+ Syncfusion XlsIO Commercial/Free* $0–$995/yr ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 15M+ GemBox.Spreadsheet Freemium $0–$890 ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 5M+ OpenXML SDK MIT Free ✅ ❌ ❌ ✅ ✅ ✅ ✅ ✅ ❌ 100M+ ExcelDataReader MIT Free ✅ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ 70M+ Spire.XLS Commercial $999/dev ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 3M+ SpreadsheetLight MIT Free ✅ ❌ ✅ ⚠️ ❌ ⚠️ ✅ ❌ ✅ 2M+ SpreadsheetGear Commercial $975/dev ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌ ✅ 1M+ IronXL Comércio R$ 749 por ano ✅ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅ 3M+ EPPlus EPPLUS Comércio R$ 299 por ano ✅ ❌ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 80m+ ClosedXML fechadoxml com Livre ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ ✅ 60m+ NPOI O Apache 2.0 Livre ✅ ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ 50m+ Aspose.Cells Comércio US$ 1.199 por ano ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 20m+ Syncfusion XlsIO Comércio / Livre * $0 – $995 / ano ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 15M+ GemBox.Spreadsheet GemBox.Spreadsheet Apresentação Freemião Dólar 890 ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 5M+ OpenXML SDK MIT Livre ✅ ❌ ❌ ✅ ✅ ✅ ✅ ✅ ❌ 100M+ ExcelDataReader MIT Free ✅ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ 70m+ Spire.XLS Avaliação.xls Commercial Dólar 999/dev ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 3M+ SpreadsheetLight MIT Free ✅ ❌ ✅ ️ ❌ ️ ✅ ❌ ✅ 2M+ SpreadsheetGear Comércio R$ 975 / Dólar ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌ ✅ 1M + Syncfusion offers a for companies with <$1M revenue and ≤5 developers. free Community License ⚠️ = Suporte parcial ou não verificado. Licença Comunitária Livre The short version, by scenario: Orçamento apertado, leitura/escrita completa? → ClosedXML (MIT, desenvolvimento maduro, ativo) Enterprise-grade com suporte premium? → IronXL ou Aspose.Cells Maior cobertura de recursos? → Aspose.Cells ou Syncfusion XlsIO Apenas leitura, velocidade máxima? → ExcelDataReader → OpenXML SDK Low-level control, no abstraction? → NPOI Java port, legacy XLS required? Now let's look at each library in detail. The 12 C# Excel Libraries Worth Knowing in 2026 Each profile below follows the same structure: what the library is, a code example performing the standard task (create workbook, write data, save), its genuine strengths and limitations, and who should use it. We're aiming for fairness — every library gets the same honest treatment. 1. IronXL — The All-in-One Commercial .NET Library IronXL é uma biblioteca comercial .NET Excel de que prioriza a simplicidade da API e a implantação cross-platform. Ele lê e escreve XLS, XLSX, CSV, TSV e JSON sem exigir o Microsoft Office. Seu vasto conjunto de recursos também inclui a criação e edição de planilhas do Microsoft Excel, a capacidade de exportar planilhas do Excel, trabalhar com fórmulas e muito mais. Você pode até adicionar formatos de imagem às suas planilhas do Excel. Software de Ferro using IronXL; // Create a new workbook and write data WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet ws = wb.CreateWorkSheet("Sales"); ws["A1"].Value = "Product"; ws["B1"].Value = "Revenue"; ws["C1"].Value = "Date"; ws["A2"].Value = "Widget"; ws["B2"].DoubleValue = 14999.99; ws["C2"].Value = DateTime.Now.ToShortDateString(); // Apply formatting ws["B1:B2"].FormatString = "$#,##0.00"; wb.SaveAs("sales_ironxl.xlsx"); IronXL Ficheiro de saída Excel A API usa um padrão de endereço de WorkBook → WorkSheet → célula que reflete como os desenvolvedores pensam sobre planilhas. O endereço de célula suporta a notação A1 (ws["B2"]) e as expressões de intervalo (ws["A1:C10"]), e a propriedade FormatString aceita códigos de formato padrão do Excel. Strengths: Minimal boilerplate, criar, ler e exportar dados em 3-5 linhas de código. Isso faz é um pedaço de bolo para adicionar aos seus aplicativos .NET Cross-platform: Windows, Linux, macOS, Docker, Azure, AWS Lambda – todos testados. Monthly releases with active bug fixes; the API-level simplicity is the primary differentiator, not raw throughput (see Benchmarks section for honest numbers) Supports XLS (legacy) + XLSX + CSV + TSV + JSON in a unified API Implementação no mundo real: a Brainycom utiliza o IronXL para conciliação financeira sem fins lucrativos, alcançando processamento de pagamento 4x mais rápido; a ThreeB IT capacita a logística e a automação de cuidados de saúde Excel em toda a Alemanha Limitations: No chart creation (you can read existing charts, but not generate them programmatically) Não há geração de tabela pivot Commercial license required for production ($749/year for Lite) Smaller community compared to EPPlus or ClosedXML As equipes que precisam de uma API limpa para ler/escrever/exportar dados do Excel entre plataformas não precisam de geração de gráficos e valorizam suporte profissional e atualizações frequentes. Best for: 2. — The Community Favorite Gone Commercial EPPlus O EPPlus é uma das bibliotecas .NET Excel mais baixadas da história. Originalmente licenciado pelo MIT, o in version 5 (2020). The last free version ( ) remains widely used but unmaintained. The commercial version is feature-rich with charts, pivot tables, and a strong formula engine. switched to a commercial Polyform license 4.5.3 on NuGet using OfficeOpenXml; ExcelPackage.License.SetNonCommercialOrganization("My Organization"); using var package = new ExcelPackage(); var ws = package.Workbook.Worksheets.Add("Sales"); ws.Cells["A1"].Value = "Product"; ws.Cells["B1"].Value = "Revenue"; ws.Cells["C1"].Value = "Date"; ws.Cells["A2"].Value = "Widget"; ws.Cells["B2"].Value = 14999.99; ws.Cells["C2"].Value = DateTime.Now; ws.Cells["C2"].Style.Numberformat.Format = "yyyy-mm-dd"; ws.Cells["B1:B2"].Style.Numberformat.Format = "$#,##0.00"; package.SaveAs(new FileInfo("sales_epplus.xlsx")); EEPlus Output O EPPlus usa uma hierarquia ExcelPackage → Workbook → Worksheets que reflete de perto o modelo de objeto do Excel. A propriedade Cells aceita referências de estilo A1 e o estilo é aplicado através de um objeto de estilo aninhado. Strengths: Massive community and ecosystem, 80M+ NuGet downloads, extensive Stack Overflow coverage Charts, pivot tables, conditional formatting, data validation, VBA support Potente LoadFromCollection<T>() e LoadFromDataTable() para mapeamento de objeto para Excel Motor de fórmula madura com ampla cobertura de funções Limitations: XLSX only, no XLS legacy format support Commercial license required for any commercial use since v5 ($299/year base) Version 4.5.3 (last free version) is unmaintained and missing years of bug fixes Pode lutar com memória em arquivos muito grandes (100K+ linhas) em algumas configurações Teams with existing EPPlus investments, projects needing charts/pivot tables on a moderate budget, and developers who value the enormous community knowledge base. Best for: ClosedXML – A escolha do desenvolvedor de código aberto para a API do Excel Compartilhe com a Microsoft in a developer-friendly API. MIT-licensed, actively maintained (frequent commits on É a recomendação ideal quando os desenvolvedores pedem uma biblioteca do Excel gratuita e com recursos completos. and .NET community forums. fechadoxml OpenXML SDK GitHub Atividade Overflow using ClosedXML.Excel; using var wb = new XLWorkbook(); var ws = wb.AddWorksheet("Sales"); ws.Cell("A1").Value = "Product"; ws.Cell("B1").Value = "Revenue"; ws.Cell("C1").Value = "Date"; ws.Cell("A2").Value = "Widget"; ws.Cell("B2").Value = 14999.99; ws.Cell("C2").Value = DateTime.Now; ws.Cell("B2").Style.NumberFormat.Format = "$#,##0.00"; wb.SaveAs("sales_closedxml.xlsx"); ClosedXML Saída ClosedXML's API is intuitive: XLWorkbook → AddWorksheet → Cell() with string-based addressing. The Style property chain is clean and discoverable via IntelliSense. It builds on top of OpenXML SDK, so it generates spec-compliant .xlsx files. Strengths: MIT license, genuinely free for all use, including commercial Clean, intuitive API that makes OpenXML SDK bearable Desenvolvimento ativo com lançamentos regulares e manutencionistas responsivos Bons suportes de tabela de pivot e formatação condicional Large community: 60M+ NuGet downloads Limitations: Apenas XLSX, sem suporte ao formato XLS legacy No chart creation (a frequently requested feature, still unimplemented) Diminuição do desempenho com conjuntos de dados muito grandes (100K+ linhas podem ser lentas ou com memória intensiva) No commercial support, community-only via GitHub Issues Open-source projects, budget-constrained teams, and any scenario where MIT licensing is a requirement. Excellent for small-to-medium datasets where chart generation isn't needed. Best for: 4. NPOI — The Java Port That Refuses to Die is the .NET port of , the Java Excel library. It's one of the few free libraries that supports both XLS (BIFF) and XLSX (OOXML) formats. Apache 2.0 licensed. The API reflects its Java heritage, it's more verbose than C#-native alternatives, but it's battle-tested and handles legacy formats that newer libraries can't touch. Depois Apache POI using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; IWorkbook wb = new XSSFWorkbook(); ISheet ws = wb.CreateSheet("Sales"); IRow headerRow = ws.CreateRow(0); headerRow.CreateCell(0).SetCellValue("Product"); headerRow.CreateCell(1).SetCellValue("Revenue"); headerRow.CreateCell(2).SetCellValue("Date"); IRow dataRow = ws.CreateRow(1); dataRow.CreateCell(0).SetCellValue("Widget"); dataRow.CreateCell(1).SetCellValue(14999.99); dataRow.CreateCell(2).SetCellValue(DateTime.Now.ToShortDateString()); using var fs = new FileStream("sales_npoi.xlsx", FileMode.Create); wb.Write(fs); Depois da saída NPOI requer criação explícita de linha e célula através de CreateRow() e CreateCell(), não há endereço de célula baseado em cadeias. Para arquivos XLS, troque o XSSFWorkbook com o HSSFWorkbook. O design orientado pela interface (IWorkbook, ISheet, IRow) significa que a mesma lógica de código pode direcionar qualquer formato alterando um único construtor. Strengths: Apache 2.0 license, free for commercial use Supports both XLS (97-2003) and XLSX, one of few free libraries that handles legacy XLS Chart creation support (basic) Handles Word (.doc/.docx) and PowerPoint in addition to Excel documents Proven at enterprise scale — ported from Apache POI with decades of Java heritage Limitations: Verbose, Java-style API, significantly more boilerplate than C#-native alternatives Performance is generally slower than EPPlus, ClosedXML, or IronXL for equivalent operations A documentação é escassa e muitas vezes em chinês — recursos em inglês são contribuídos pela comunidade API pode ser pouco intuitivo para desenvolvedores desconhecidos com o Apache POI Projetos que read or write legacy XLS files without a commercial license. Also suitable when you need a single library for Excel + Word + PowerPoint on a zero budget. Best for: deve 5. Aspose.Cells — The Enterprise Heavyweight is the most feature-rich .NET Excel library available. It supports virtually every Excel feature: charts, pivot tables, conditional formatting, data validation, sparklines, slicers, VBA macros, and more. It's also the most expensive option. Aspose positions it as a complete Excel automation platform, not just a file I/O library. Células - Células using Aspose.Cells; Workbook wb = new Workbook(); Worksheet ws = wb.Worksheets[0]; ws.Cells["A1"].PutValue("Product"); ws.Cells["B1"].PutValue("Revenue"); ws.Cells["C1"].PutValue("Date"); ws.Cells["A2"].PutValue("Widget"); ws.Cells["B2"].PutValue(14999.99); ws.Cells["C2"].PutValue(DateTime.Now); Style style = wb.CreateStyle(); style.Number = 7; // $#,##0.00 ws.Cells["B2"].SetStyle(style); wb.Save("sales_aspose.xlsx"); Aspose.Células de saída Aspose.Cells uses a Workbook → Worksheets → Cells hierarchy. Data is written with PutValue() rather than direct assignment. Styling requires creating a Style object and applying it, more steps than some competitors, but it provides granular control over every formatting property. Strengths: Most comprehensive feature set in the .NET Excel ecosystem, if Excel can do it, Aspose.Cells probably supports it Excelente desempenho em arquivos grandes, otimizado para processamento de lote em escala empresarial Suporte extensivo de formatos: XLSX, XLS, XLSB, XLSM, CSV, ODS, PDF, HTML, imagens Excel-to-PDF renderização que está entre os mais fiéis disponíveis Strong documentation, extensive code samples, and dedicated support team Limitations: Highest price point: Developer Small Business starts at $1,199/year; OEM tiers reach $11,198 API is verbose in places, creating and applying styles is more ceremonial than IronXL or ClosedXML A superfície de API maciça pode ser esmagadora para tarefas simples Dependência pesada, o pacote NuGet é grande Enterprise teams with budget for premium tooling, projects requiring advanced features (charts, pivots, sparklines, VBA), and workflows needing high-fidelity . Best for: Excel-to-PDF conversion Syncfusion XlsIO - O Jogo da Suíte É parte da enorme suíte Essential Studio da Syncfusion. Oferece ampla cobertura de recursos do Excel e benefícios do ecossistema de controle de UI cross-platform da Syncfusion. A Licença Comunitária gratuita (para empresas com receita inferior a 1 milhão de dólares, ≤ 5 desenvolvedores) torna-a acessível a equipes pequenas. Síncope essencial XlsIO using Syncfusion.XlsIO; using ExcelEngine excelEngine = new ExcelEngine(); IApplication app = excelEngine.Excel; app.DefaultVersion = ExcelVersion.Xlsx; IWorkbook wb = app.Workbooks.Create(1); IWorksheet ws = wb.Worksheets[0]; ws.Range["A1"].Text = "Product"; ws.Range["B1"].Text = "Revenue"; ws.Range["C1"].Text = "Date"; ws.Range["A2"].Text = "Widget"; ws.Range["B2"].Number = 14999.99; ws.Range["C2"].DateTime = DateTime.Now; ws.Range["B2"].NumberFormat = "$#,##0.00"; wb.SaveAs("sales_syncfusion.xlsx"); Syncfusion XlsIO Output Syncfusion uses an ExcelEngine → IApplication → IWorkbook hierarchy that mirrors Excel's COM object model. Cell access is through Range[] with separate typed properties (Text, Number, DateTime). This strongly-typed approach catches type errors at compile time rather than runtime. Strengths: Rico em recursos: Use fontes de dados para criar gráficos, tabelas pivot, formatação condicional, validação de dados, marcadores de modelo, sparklines Free Community License for small companies, a genuine differentiator Excel-to-PDF conversion included Deep integration with Syncfusion's Blazor, MAUI, and WPF UI controls Desenvolvimento ativo com lançamentos trimestrais; cross-platform (Windows, Linux, macOS, Docker) Limitations: The Community License has strict eligibility requirements, companies over $1M revenue must purchase Full Suite pricing is complex and can be expensive ($995/dev/year for Essential Studio) Library is part of a massive suite, you're pulling in more dependencies than needed for Excel-only work Preocupação dos fornecedores: a integração profunda do ecossistema Syncfusion pode dificultar a migração Equipes que já usam os controles de interface da Syncfusion, startups que se qualificam para a Licença da Comunidade gratuita e projetos que precisam de integração estreita entre o processamento do Excel e os extremos frontal do Blazor/MAUI. Best for: 7. — The Performance-Focused Mid-Tier GemBox.Spreadsheet é um componente .NET licenciado comercialmente com um nível livre convincente (150 linhas, 5 folhas). Anuncia números de desempenho fortes - a empresa reivindica 1 milhão de linhas em menos de 3,5 segundos com menos de 256 MB de RAM - e suporta uma gama incomum de formatos de saída, incluindo PDF, XPS e renderização de imagem. . GemBox.Spreadsheet Apresentação NuGet using GemBox.Spreadsheet; SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY"); var wb = new ExcelFile(); var ws = wb.Worksheets.Add("Sales"); ws.Cells["A1"].Value = "Product"; ws.Cells["B1"].Value = "Revenue"; ws.Cells["C1"].Value = "Date"; ws.Cells["A2"].Value = "Widget"; ws.Cells["B2"].Value = 14999.99; ws.Cells["C2"].Value = DateTime.Now; ws.Cells["B2"].Style.NumberFormat = "$#,##0.00"; wb.Save("sales_gembox.xlsx"); GemBox.Spreadsheet Output GemBox uses ExcelFile → Worksheets → Cells with string-based addressing. The API is clean and similar to ClosedXML's pattern. The free tier key (FREE-LIMITED-KEY) enables evaluation without watermarks — just with row limits. Strengths: Strong claimed performance on large datasets (1M rows, <256MB, <3.5s) PDF, XPS, and image export built in — no separate library needed Gráficos, tabelas pivot, formatação condicional e suporte para validação de dados Nível livre para pequenos conjuntos de dados (útil para protótipos) Clean, idiomatic C# API Limitations: Free tier limited to 150 rows and 5 sheets — too restrictive for most real applications Comunidade menor do que EPPlus, ClosedXML ou NPOI – menos respostas de Stack Overflow Professional license starts at ~$890 (one-time) — competitive but not cheap Less name recognition — harder to get team buy-in compared to established alternatives Aplicações sensíveis ao desempenho que processam arquivos grandes, projetos que precisam de exportação de PDF/imagem incorporada do Excel e equipes que valorizam a licença única sobre as assinaturas. Best for: OpenXML SDK – A camada de fundação Oferece acesso de baixo nível ao É sobre o que ClosedXML e muitas outras bibliotecas são construídas. licenciado pelo MIT, mantido pela Microsoft, e dá-lhe controle direto sobre a estrutura XML dos arquivos .xlsx. O comércio: você está essencialmente escrevendo XML com ajudantes. O Open XML SDK da Microsoft Documentos XML abertos using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; using var doc = SpreadsheetDocument.Create("sales_openxml.xlsx", SpreadsheetDocumentType.Workbook); var workbookPart = doc.AddWorkbookPart(); workbookPart.Workbook = new Workbook(); var worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); worksheetPart.Worksheet = new Worksheet(new SheetData()); var sheets = workbookPart.Workbook.AppendChild(new Sheets()); sheets.Append(new Sheet { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sales" }); var sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>(); var row = new Row { RowIndex = 1 }; row.Append(new Cell { CellReference = "A1", DataType = CellValues.String, CellValue = new CellValue("Product") }); row.Append(new Cell { CellReference = "B1", DataType = CellValues.String, CellValue = new CellValue("Revenue") }); sheetData.Append(row); workbookPart.Workbook.Save(); Apresentação OpenXML Let's be direct: that's a lot of code just to write two cells. OpenXML SDK requires you to manually construct the XML document structure, workbook parts, worksheet parts, sheet data, rows, cells, cell references, data types. There's no worksheet["A1"] = value convenience. Strengths: MIT licenciado, mantido pela Microsoft, como "oficial" como ele fica Maximum control over document structure, nothing is abstracted away Eficiente em memória para transmissões de streaming (a abordagem de estilo SAX está disponível) 100M+ downloads NuGet, a camada de fundação que muitas outras bibliotecas dependem Nenhum risco de terceiros, é da própria Microsoft Limitations: Extremely verbose, simple tasks require 5-10× more code than any higher-level library No formula calculation engine, formulas are stored as strings, not evaluated Não há suporte para XLS, apenas OOXML (.xlsx) No convenient cell addressing, formatting shortcuts, or data binding helpers Curva de aprendizagem íngreme, você precisa entender a especificação OOXML Os autores de bibliotecas criam sua própria abstração do Excel, cenários que exigem controle absoluto sobre a estrutura do documento e equipes com políticas estritas de "sem dependências de terceiros" que podem absorver o custo de desenvolvimento. Best for: 9. ExcelDataReader — The Lightweight Read-Only Specialist does one thing and does it well: reading Excel files. It supports XLS, XLSX, and CSV through a streaming IDataReader interface that's memory-efficient for large files. MIT-licensed. If you only need to spreadsheets, this should be your first consideration. ExcelDataReader Leia using ExcelDataReader; using System.Data; // Required for .NET Core System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); using var stream = File.Open("sales_data.xlsx", FileMode.Open, FileAccess.Read); using var reader = ExcelReaderFactory.CreateReader(stream); DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration { ConfigureDataTable = _ => new ExcelDataTableConfiguration { UseHeaderRow = true } }); DataTable table = result.Tables[0]; foreach (DataRow row in table.Rows) { Console.WriteLine($"{row["Product"]}: {row["Revenue"]}"); } ExcelDataReader Reading Output O ExcelDataReader retorna dados através das interfaces System.Data familiares: IDataReader para streaming e DataSet/DataTable para resultados materializados. A UseHeaderRow = verdadeira configuração promove a primeira linha para nomes de colunas. Strengths: Licença MIT - grátis para tudo Lightweight: small NuGet package, minimal dependencies Streaming reader — memory-efficient for large files Supports both XLS and XLSX plus CSV Integração de DataTable facilita a transmissão de dados para bancos de dados ou outros sistemas 70M+ downloads do NuGet – confiabilidade comprovada Limitations: — cannot create or modify Excel files Read-only Sem formatação, estilo, gráficos ou avaliação de fórmulas No cell addressing — data access is row/column based only Requer registro do provedor de codificação manual no .NET Core ETL pipelines, data import workflows, migration tools, and any scenario where you need to Excel dados de forma rápida e barata sem nunca escrever de volta para uma planilha. Best for: read 10. - O concorrente do eIceBlue Spire.XLS by eIceBlue is a commercial Excel component with a free version limited to 200 rows and 5 sheets. The commercial version supports the full range of Excel features including charts, pivot tables, and Excel-to-PDF conversion. eIceBlue also offers Word, PDF, and PowerPoint libraries in their Spire.Office bundle. Spire.XLS for .NET using Spire.Xls; Workbook wb = new Workbook(); Worksheet ws = wb.Worksheets[0]; ws.Name = "Sales"; ws.Range["A1"].Text = "Product"; ws.Range["B1"].Text = "Revenue"; ws.Range["C1"].Text = "Date"; ws.Range["A2"].Text = "Widget"; ws.Range["B2"].NumberValue = 14999.99; ws.Range["C2"].DateTimeValue = DateTime.Now; ws.Range["B2"].NumberFormat = "$#,##0.00"; wb.SaveToFile("sales_spire.xlsx", ExcelVersion.Version2016); Spire.XLS Output Spire.XLS follows a pattern similar to Syncfusion, Workbook → Worksheet → Range with typed value properties. The SaveToFile method requires specifying the target Excel version explicitly. Strengths: Comprehensive feature set: charts, pivots, conditional formatting, encryption, digital signatures Excel-to-PDF and Excel-to-image conversion built in Versão gratuita disponível (200 linhas, 5 folhas), mais generosa do que a camada gratuita da GemBox para contagem de linhas Suporte para XLS e XLSX Parte da suíte Spire.Office mais ampla Limitations: Free version's 200-row limit is too restrictive for most production use Commercial pricing starts at ~$999/developer, on the higher end Presença da comunidade .NET menor em comparação com Aspose ou Syncfusion A qualidade da documentação é inconsistente, algumas áreas da API são mal documentadas Java heritage shows in some API patterns Teams evaluating commercial alternatives to Aspose.Cells at a different price point, and projects already using other Spire.Office components. Best for: 11. SpreadsheetLight — The Minimalist é uma biblioteca licenciada pelo MIT construída sobre o OpenXML SDK. Ele visa ser a opção "simples" - fácil de aprender, leve e suficiente para tarefas de planilhas comuns. SpreadsheetLight using SpreadsheetLight; using var doc = new SLDocument(); doc.SetCellValue("A1", "Product"); doc.SetCellValue("B1", "Revenue"); doc.SetCellValue("C1", "Date"); doc.SetCellValue("A2", "Widget"); doc.SetCellValue("B2", 14999.99); doc.SetCellValue("C2", DateTime.Now.ToShortDateString()); doc.SaveAs("sales_spreadsheetlight.xlsx"); O SpreadsheetLight usa uma única classe SLDocument como ponto de entrada. O método SetCellValue é sobrecarregado para diferentes tipos. É provavelmente a API mais simples nesta comparação – mas a simplicidade vem com um custo. Strengths: MIT licensed, genuinely free API extremamente simples, curva de aprendizado mais baixa neste roundup Leve, dependências mínimas (apenas o SDK OpenXML) Basic chart support (more than ClosedXML offers) Bom o suficiente para tarefas simples de relatórios e exportação de dados Limitations: Aparece sem manutenção, atualizações raras, a última atividade importante foi anos atrás .NET Framework focused, .NET Core/.NET 8+ compatibility is uncertain Apenas XLSX, sem suporte XLS Conjunto limitado de recursos em comparação com alternativas ativas Comunidade pequena, cobertura limitada de Stack Overflow e recursos de resolução de problemas Simple, one-off spreadsheet generation tasks in .NET Framework projects where you need something lightweight and free. For this use case, ClosedXML might actually be the better choice given its active maintenance. Best for: 12. SpreadsheetGear — The Enterprise Veteran está no espaço do .NET Excel há mais de uma década. Posiciona-se como o motor de cálculo de alto desempenho, compatível com o Excel para aplicações empresariais. A biblioteca inclui gráficos, um motor de fórmulas com mais de 450 funções e controles de planilha WinForms/WPF para a construção de UIs interativos semelhantes ao Excel. SpreadsheetGear using SpreadsheetGear; IWorkbook wb = Factory.GetWorkbook(); IWorksheet ws = wb.Worksheets["Sheet1"]; IRange cells = ws.Cells; cells["A1"].Value = "Product"; cells["B1"].Value = "Revenue"; cells["C1"].Value = "Date"; cells["A2"].Value = "Widget"; cells["B2"].Value = 14999.99; cells["C2"].Value = DateTime.Now; cells["B2"].NumberFormat = "$#,##0.00"; wb.SaveAs("sales_spreadsheetgear.xlsx", FileFormat.OpenXMLWorkbook); SpreadsheetGear Saída A API do SpreadsheetGear reflete de perto o modelo de objeto do Excel VBA, os desenvolvedores que escreveram macros do Excel se sentirão imediatamente em casa. O padrão Factory.GetWorkbook() e a interface IRange seguem de perto as convenções do Excel. Strengths: 450+ built-in functions, one of the most complete formula engines in any .NET library Cálculos de alto desempenho otimizados para cenários de modelagem financeira WinForms e controles de UI de planilha WPF para a construção de interfaces interativas semelhantes ao Excel Excel excelente compatibilidade, visa renderização de pixel-perfeito Recorde de longa data, produção comprovada em ambientes empresariais Limitations: Ponto de preço mais alto (~ $ 975 / desenvolvedor) com preços menos visíveis, deve entrar em contato com as vendas Comunidade de desenvolvedores menor do que EPPlus, ClosedXML ou NPOI Less modern API feel compared to newer entrants Presença limitada em plataformas comunitárias modernas (HackerNoon, Dev.to, etc.) No free tier or community edition Aplicações financeiras que precisam de um poderoso mecanismo de cálculo, aplicações de desktop que precisam de controles de interface da planilha incorporados e ambientes empresariais onde a migração do Excel VBA é o caso de uso. Best for: Apresentação do recurso: o que cada biblioteca pode realmente fazer? Além dos fundamentos das células de leitura e escrita, as bibliotecas do Excel diferem drasticamente em seu suporte avançado a recursos. File Format Support Library XLSX XLS XLSB XLSM CSV TSV JSON ODS PDF Export IronXL ✅ ✅ ❌ ✅ ✅ ✅ ✅ ❌ ❌ EPPlus ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ClosedXML ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ NPOI ✅ ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ Aspose.Cells ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ Syncfusion ✅ ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ GemBox ✅ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ✅ OpenXML SDK ✅ ❌ ❌ ✅ ❌ ❌ ❌ ❌ ❌ ExcelDataReader ✅ ✅ ❌ ❌ ✅ ❌ ❌ ❌ ❌ Spire.XLS ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅ ✅ SpreadsheetLight ✅ ❌ ❌ ❌ ✅ ❌ ❌ ❌ ❌ SpreadsheetGear ✅ ✅ ❌ ❌ ✅ ❌ ❌ ❌ ✅ IronXL ✅ ✅ ❌ ✅ ✅ ✅ ✅ ❌ ❌ EPPlus ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ fechadoxml ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ Depois ✅ ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ Células - Células ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ Syncfusion ✅ ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ GemBox ✅ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ✅ OpenXML SDK ✅ ❌ ❌ ✅ ❌ ❌ ❌ ❌ ❌ ExcelDataReader ✅ ✅ ❌ ❌ ✅ ❌ ❌ ❌ ❌ Avaliação.xls ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅ ✅ SpreadsheetLight ✅ ❌ ❌ ❌ ✅ ❌ ❌ ❌ ❌ SpreadsheetGestão ✅ ✅ ❌ ❌ ✅ ❌ ❌ ❌ ✅ The format support gap is significant. If you need gratuito, NPOI é a sua única opção real. , you're looking at Aspose.Cells, Syncfusion, GemBox, Spire.XLS, or SpreadsheetGear, all commercial. IronXL's strength here is the unified API for XLSX + XLS + CSV + TSV + JSON, a practical combination for data pipeline work. XLS legacy support PDF export from Excel Gráficos, tabelas pivot e recursos avançados Library Charts Pivot Tables Cond. Formatting Data Validation Images Formula Engine IronXL ❌ ❌ ✅ ✅ ✅ ✅ (auto-recalc) EPPlus ✅ ✅ ✅ ✅ ✅ ✅ ClosedXML ❌ ✅ ✅ ✅ ✅ ✅ NPOI ✅ (basic) ❌ ✅ ✅ ✅ ✅ Aspose.Cells ✅ ✅ ✅ ✅ ✅ ✅ Syncfusion ✅ ✅ ✅ ✅ ✅ ✅ GemBox ✅ ✅ ✅ ✅ ✅ ✅ OpenXML SDK ✅ (manual XML) ✅ (manual XML) ✅ (manual XML) ✅ (manual XML) ✅ ❌ ExcelDataReader ❌ ❌ ❌ ❌ ❌ ❌ Spire.XLS ✅ ✅ ✅ ✅ ✅ ✅ SpreadsheetLight ✅ (basic) ❌ ✅ ✅ ✅ ✅ SpreadsheetGear ✅ ❌ ✅ ✅ ✅ ✅ (450+ functions) Irmão ❌ ❌ ✅ ✅ ✅ ✅ (auto-reconhecimento) EPPLUS ✅ ✅ ✅ ✅ ✅ ✅ fechadoxml ❌ ✅ ✅ ✅ ✅ ✅ Depois ✅ (básico) ❌ ✅ ✅ ✅ ✅ Células - Células ✅ ✅ ✅ ✅ ✅ ✅ Sincronização ✅ ✅ ✅ ✅ ✅ ✅ Gemboxe ✅ ✅ ✅ ✅ ✅ ✅ OpenXML em SDK ✅ (Manual de XML) ✅ (Manual de XML) ✅ (Manual de XML) ✅ (manual XML) ✅ ❌ ExcelDataReader ❌ ❌ ❌ ❌ ❌ ❌ Avaliação.xls ✅ ✅ ✅ ✅ ✅ ✅ SpreadsheetLight ✅ (básico) ❌ ✅ ✅ ✅ ✅ SpreadsheetGestão ✅ ❌ ✅ ✅ ✅ ✅ (450+ funções) The tradeoff here is clear. If you need , você precisa de EPPlus, Aspose.Cells, Syncfusion, GemBox ou Spire.XLS. IronXL e ClosedXML ambos carecem de criação de gráficos – uma limitação honesta que vale a pena reconhecer. Para o trabalho de leitura/escrita de dados sem gráficos, ambos oferecem APIs mais limpos do que as alternativas capazes de gráficos. chart and pivot table creation Desempenho: resultados de referência em operações do mundo real As alegações de desempenho sem metodologia são de marketing.Eis como estruturamos nossos testes, e os resultados provavelmente o surpreenderão. Metodologia We ran a standardized benchmark suite across 15 libraries (our core 12 plus , em , and as bonus contenders). Rather than a single synthetic task, we tested four real-world operations that mirror what developers actually build with Excel libraries: SpreadCheetah MINIExcel Velocidade Geração de relatórios financeiros: crie um livro de trabalho de relatório de 12 meses com fórmulas e formatação Rastreamento de inventário: Construa uma planilha de rastreamento de 500 itens, de 3 armazéns com referências cruzadas : Process and write 10,000 transactions with aggregation Sales Data Analysis Processamento de folha de pagamento de funcionários: gerar um livro de trabalho de folha de pagamento de 250 funcionários com campos calculados Cada teste media o tempo de execução do relógio de parede (ms) e a memória de pico (MB). Os testes foram executados em .NET 8 com múltiplas iterações; nós reportamos os valores registrados a partir do nosso benchmark harness. Somente testes que concluíram com sucesso são relatados, bibliotecas que falharam em uma determinada operação são excluídas dessa tabela em vez de penalizadas. Financial Report Generation (12-Month Statements) Rank Library Time (ms) Memory (MB) 1 SpreadCheetah 2.9 0.2 2 DevExpress 53.2 4.5 3 Aspose.Cells 55.5 0.25 4 Spire.XLS 80.3 1.2 5 OfficeIMO 257.6 2.1 6 IronXL 498.1 4.2 1 Distribuição 2.9 0.2 2 DevExpress 53.2 4.5 3 Células - Células 55.5 0.25 4 Avaliação.xls 80.3 1.2 5 Escritório 257.6 2.1 6 IronXL 498.1 4.2 O SpreadCheetah de 2.9ms é impressionante, é uma biblioteca de streaming somente para escrever, apenas para a frente, projetada explicitamente para a capacidade máxima. Ele sacrifica a conveniência da API (sem acesso aleatório a células, sem leitura) para a velocidade bruta. Para a geração de relatórios puros, onde você conhece a estrutura de saída em frente, é essencialmente imbatível. Aspose.Cells e DevExpress aglomerados estreitamente na faixa de 53-56ms, representando a camada superior entre as bibliotecas com recursos completos. IronXL trails here at 498ms. For a one-off monthly report, that's imperceptible to the end user. For a batch job generating thousands of reports, it becomes a consideration, and SpreadCheetah or Aspose.Cells would be the better choice for that specific workload. Inventory Tracking (500 Items, 3 Warehouses) Rank Library Time (ms) Memory (MB) 1 EPPlus 51.2 2.9 2 ExcelMapper 54.1 4.9 3 SpreadCheetah 56.3 2.1 4 Aspose.Cells 136.5 2.4 5 Spire.XLS 183.2 1.4 6 DevExpress 451.7 5.0 7 IronXL 1,344.5 18.7 8 OfficeIMO 16,659.5 14.4 1 EPPlus 51.2 2.9 2 Excelônia 54.1 4.9 3 Distribuição 56.3 2.1 4 Células - Células 136.5 2.4 5 Spire.XLS 183.2 1.4 6 DevExpress 451.7 5.0 7 IronXL 1,344.5 18.7 8 Escritório 16,659.5 14.4 EPPlus dominates this mid-complexity operation, followed closely by SpreadCheetah and ExcelMapper. The memory numbers tell an important story: Spire.XLS achieves competitive speed at just 1.4MB, the most memory-efficient result for this test. IronXL's 18.7MB footprint at rank 7 reflects its DOM-based architecture loading the full document model into memory. That said, 1.3 seconds for a 500-item inventory workbook is perfectly acceptable for interactive use, it's the kind of overhead you optimize only when it shows up in profiling. Análise de dados de vendas (10.000 transações) Este é o teste mais pesado, 10.000 linhas com agregação. Ele separa bibliotecas construídas para escala daquelas otimizadas para conveniência. Rank Library Time (ms) Memory (MB) 1 CsvHelper 140.3 9.3 2 ClosedXML 262.5 16.4 3 SpreadCheetah 289.7 15.9 4 FastExcel 346.7 13.8 5 MiniExcel 638.3 17.7 6 EPPlus 671.0 21.3 7 Aspose.Cells 696.5 15.3 8 NPOI 1,930.4 35.0 9 Spire.XLS 2,015.5 26.8 10 DevExpress 4,860.6 25.0 11 IronXL 11,322.9 80.9 1 Auxílio 140.3 9.3 2 fechadoxml 262.5 16.4 3 Distribuição 289.7 15.9 4 Velocidade 346.7 13.8 5 MINIExcel 638.3 17.7 6 EPPLUS 671.0 21.3 7 Células - Células 696.5 15.3 8 Depois 1,930.4 35.0 9 Spire.XLS 2o 055 26.8 10 DevExpress 4 860 6o 25.0 11 IronXL 11,322.9 80.9 Vamos ser honestos: o IronXL termina por último neste teste, e a lacuna é significativa. A 11,3 segundos e 80,9 MB, é 80x mais lento do que o CsvHelper e 43x mais lento do que o ClosedXML. O CsvHelper vence porque é um analisador de CSV construído especificamente – não uma biblioteca completa do Excel – e evita a sobrecarga da construção de documentos OOXML completamente. A implicação prática: se você estiver construindo um pipeline de dados que processar mais de 10.000 conjuntos de dados de transações repetidamente, o IronXL não é a ferramenta certa para esse trabalho específico. EPPlus, ClosedXML, ou uma biblioteca de streaming como o SpreadCheetah irá servir você dramaticamente melhor. Employee Payroll Processing (250 Employees) Apenas três bibliotecas concluíram com sucesso esta complexa operação de várias folhas: Rank Library Time (ms) Memory (MB) 1 Aspose.Cells 404.0 3.8 2 IronXL 2,893.0 12.5 3 Spire.XLS 4,323.0 N/A* 1 Aspose.Cells 404.0 3.8 2 IronXL 2,893.0 12.5 3 Avaliação.xls 4,323.0 N/A* Spire.XLS reported negative memory measurement — likely a measurement artifact. A maioria das bibliotecas não tentou esse teste ou falhou em concluí-lo.O fato de que apenas três bibliotecas tiveram sucesso fala da complexidade dos livros de trabalho de várias folhas, pesados com fórmulas com campos calculados. Aspose.Cells leva de forma convincente. IronXL termina em segundo, mais lento, mas concluiu a operação com sucesso e produziu a saída correta, que a maioria dos concorrentes não conseguiu gerenciar. O que os benchmarks nos dizem (e o que eles não dizem) Três modelos emergem a partir desses dados. SpreadCheetah aparece no top 3 em cada teste que entrou, mas não pode ler arquivos, não pode fazer acesso aleatório a células e não pode aplicar formatação complexa depois de escrever.Se a velocidade é sua principal preocupação e você está gerando estruturas de relatórios conhecidas, vale a pena adicionar à sua lista de avaliação. Aspose.Cells, EPPlus e Spire.XLS geralmente negociam posições dependendo do tipo de operação. . Its DOM-based architecture and high-level API abstractions introduce overhead that shows up at scale, the tradeoff for that clean 3-line API you saw in the introduction. streaming/write-only libraries dominate speed benchmarks full-featured commercial libraries cluster together IronXL's performance profile favors simplicity over speed In practice, most business applications process well under 10,000 rows. A monthly sales report with 500 rows, a quarterly export with 2,000 transactions, an inventory snapshot with a few hundred SKUs, these workloads run comfortably on any library in this comparison, IronXL included. The performance differences become decision-relevant only at scale, and even then, the right response is often to choose the right tool for each specific job rather than forcing a single library to handle everything. Suporte cross-platform: será executado em Linux, Docker e nuvem? Se o seu aplicativo estiver implementando em contêineres do Docker, serviço de aplicativos do Azure no Linux ou AWS Lambda, a sua biblioteca do Excel deve funcionar sem dependências específicas do Windows. Library Windows Linux macOS Docker Azure App Svc AWS Lambda Blazor WASM IronXL ✅ ✅ ✅ ✅ ✅ ✅ ❌ EPPlus ✅ ✅ ✅ ✅ ✅ ✅ ❌ ClosedXML ✅ ✅ ✅ ✅ ✅ ✅ ❌ NPOI ✅ ✅ ✅ ✅ ✅ ✅ ❌ Aspose.Cells ✅ ✅ ✅ ✅ ✅ ✅ ❌ Syncfusion ✅ ✅ ✅ ✅ ✅ ✅ ✅ (server) GemBox ✅ ✅ ✅ ✅ ✅ ✅ ❌ OpenXML SDK ✅ ✅ ✅ ✅ ✅ ✅ ✅ ExcelDataReader ✅ ✅ ✅ ✅ ✅ ✅ ❌ Spire.XLS ✅ ✅ ✅ ✅ ✅ ⚠️ ❌ SpreadsheetLight ✅ ⚠️ ⚠️ ⚠️ ⚠️ ❌ ❌ SpreadsheetGear ✅ ✅ ✅ ✅ ✅ ✅ ❌ Irmão ✅ ✅ ✅ ✅ ✅ ✅ ❌ EPPLUS ✅ ✅ ✅ ✅ ✅ ✅ ❌ ClosedXML ✅ ✅ ✅ ✅ ✅ ✅ ❌ Depois ✅ ✅ ✅ ✅ ✅ ✅ ❌ Células - Células ✅ ✅ ✅ ✅ ✅ ✅ ❌ Sincronização ✅ ✅ ✅ ✅ ✅ ✅ (Serviço de Serviço) Gemboxe ✅ ✅ ✅ ✅ ✅ ✅ ❌ OpenXML em SDK ✅ ✅ ✅ ✅ ✅ ✅ ✅ ExcelDataReader ✅ ✅ ✅ ✅ ✅ ✅ ❌ Avaliação.xls ✅ ✅ ✅ ✅ ✅ ️ ❌ SpreadsheetLight ✅ ️ ⚠️ ️ ️ ❌ ❌ SpreadsheetGestão ✅ ✅ ✅ ✅ ✅ ✅ ❌ A boa notícia é que a maioria das bibliotecas modernas e ativamente mantidas funcionam de forma cross-platform no .NET 8+. O SpreadsheetLight é o mais externo, o seu foco no .NET Framework torna a implantação cross-platform pouco confiável. (o motor de renderização é muito pesado), mas o Blazor do lado do servidor funciona bem com todos eles. Cliente do lado Todas as bibliotecas que visam ou .NET 6+ trabalha em contêineres mínimos do Docker ( Nenhuma dependência nativa do sistema operacional é necessária, ao contrário das bibliotecas PDF, as bibliotecas do Excel são código gerenciado puro. Docker consideration .NET padrão 2.0 mcr.microsoft.com/dotnet/runtime:8.0 Licensing & Pricing: What Will This Actually Cost Your Team? A licença é onde as bibliotecas do Excel divergem drasticamente. Opções de Open Source Library License Commercial Use Gotchas ClosedXML MIT ✅ Free No commercial support; community-only fixes NPOI Apache 2.0 ✅ Free Must include license notice; no commercial support OpenXML SDK MIT ✅ Free Microsoft-maintained, but no dedicated Excel support ExcelDataReader MIT ✅ Free Read-only; you'll need another library for writes SpreadsheetLight MIT ✅ Free Appears unmaintained; risk of unpatched bugs fechadoxml MIT Livre Sem suporte comercial; fixações exclusivas da comunidade Depois O Apache 2.0 Livre Deve incluir notificação de licença; sem suporte comercial OpenXML em SDK com Livre Mantido pela Microsoft, mas sem suporte dedicado ao Excel ExcelDataReader com Livre Apenas para leitura; você precisará de outra biblioteca para escrever SpreadsheetLight com Livre Aparece sem manutenção; risco de bugs não corrigidos As bibliotecas "gratuitas" carregam custos ocultos: nenhum suporte apoiado pelo SLA, nenhuma linha de tempo garantida e o tempo de engenharia que sua equipe gasta em problemas de resolução de problemas que um vendedor comercial lidaria. Para projetos de hobby e protótipos, esses custos são aceitáveis. and ambos permitem o uso comercial ilimitado, a distinção é no que proporciona versus o que um vendedor garante. Minha licença Licença Apache 2.0 Comunidade Commercial Options Compared Library Entry Price Per-Dev Pricing Free Tier OEM/SaaS Extra Support Included IronXL $749/yr (Lite) $749–$2,999/yr 30-day trial Yes (add-on) ✅ 24/5 engineering EPPlus $299/yr (base) $299–$599/yr v4.5.3 (outdated) Yes (add-on) ✅ Email Aspose.Cells $1,199/yr $1,199–$11,198/yr Eval (watermark) Yes (expensive) ✅ Priority Syncfusion $0–$995/yr Per-suite Community License* Included in suite ✅ (paid tiers) GemBox ~$890 (one-time) Per-developer 150 rows free One-time ✅ 12 months Spire.XLS ~$999/dev Per-developer 200 rows/5 sheets Add-on ✅ Email SpreadsheetGear ~$975/dev Per-developer None Contact sales ✅ Email Irmão R$ 799 (pouco mais) US$ 749 – US$ 2 999/ano 30 dias de julgamento O que é (add-on) Engenharia 24/5 EPPLUS US $ 299 / ano (base) US $ 299 – US $ 599 / ano v4.5.3 (acabou de ser atualizado) Yes (add-on) ✅ Email Células - Células US$ 1.199 por ano US$ 1.199 – US$ 11.198/ano Eval (marca de água) Sim (que é caro) Essa prioridade Sincronização $0 – $995 / ano por sucessão Licença Comunitária * Incluído em Suite ✅ (Pago de Taxas) Gemboxe ~$ 890 (uma única vez) Per-desenvolvimento 150 rodas grátis Uma vez 12 meses Spire.XLS R$ 999 / Dólar Per-desenvolvimento 200 linhas / 5 folhas Adição Esse e-mail SpreadsheetGestão R$ 975 / Dólar Per-developer Nenhuma Contato de Vendas Esse e-mail Licença Comunitária Syncfusion: Gratuita para empresas com receita anual bruta < 1 milhão de dólares e ≤ 5 desenvolvedores. merece uma nota. EPPlus foi licenciado pelo MIT através da versão 4.5.3 (2018). A versão 5 mudou para Polyform Noncommercial, e versões posteriores exigem uma licença comercial para qualquer uso comercial. Muitos projetos legados ainda referem 4.5.3, se é você, saiba que você está executando uma versão não mantida com bugs não corrigidos. Migrar para EPPlus 7+ requer a compra de uma licença; migrar para ClosedXML ou IronXL é um caminho alternativo. The EPPlus licensing story Irmãs O Iron Suite – todos os 10 produtos do Iron Software em conjunto – oferece economias significativas se você também precisar de recursos de PDF, OCR ou código de barras. Licenciamento Terceiro Compatibilidade .NET: Do Framework ao .NET 10 O ecossistema .NET tem se fragmentado em várias versões, e nem todas as bibliotecas têm mantido o ritmo. Library .NET Framework 4.x .NET Core 3.1 .NET 6 .NET 8 (LTS) .NET 9 .NET 10 .NET Standard 2.0 IronXL ✅ ✅ ✅ ✅ ✅ ✅ ✅ EPPlus ✅ ✅ ✅ ✅ ✅ ✅ ✅ ClosedXML ✅ ✅ ✅ ✅ ✅ ✅ ✅ NPOI ✅ ✅ ✅ ✅ ✅ ✅ ✅ Aspose.Cells ✅ ✅ ✅ ✅ ✅ ✅ ✅ Syncfusion ✅ ✅ ✅ ✅ ✅ ✅ ✅ GemBox ✅ ✅ ✅ ✅ ✅ ✅ ✅ OpenXML SDK ✅ ✅ ✅ ✅ ✅ ✅ ✅ ExcelDataReader ✅ ✅ ✅ ✅ ✅ ✅ ✅ Spire.XLS ✅ ✅ ✅ ✅ ✅ ✅ ✅ SpreadsheetLight ✅ ⚠️ ⚠️ ⚠️ ❌ ❌ ❌ SpreadsheetGear ✅ ✅ ✅ ✅ ✅ ✅ ✅ IronXL ✅ ✅ ✅ ✅ ✅ ✅ ✅ EPPLUS ✅ ✅ ✅ ✅ ✅ ✅ ✅ fechadoxml ✅ ✅ ✅ ✅ ✅ ✅ ✅ Depois ✅ ✅ ✅ ✅ ✅ ✅ ✅ Células - Células ✅ ✅ ✅ ✅ ✅ ✅ ✅ Sincronização ✅ ✅ ✅ ✅ ✅ ✅ ✅ Gemboxe ✅ ✅ ✅ ✅ ✅ ✅ ✅ OpenXML em SDK ✅ ✅ ✅ ✅ ✅ ✅ ✅ ExcelDataReader ✅ ✅ ✅ ✅ ✅ ✅ ✅ Avaliação.xls ✅ ✅ ✅ ✅ ✅ ✅ ✅ SpreadsheetLight ✅ ️ ️ ️ ❌ ❌ ❌ SpreadsheetGestão ✅ ✅ ✅ ✅ ✅ ✅ ✅ Todas as outras bibliotecas visam o .NET Standard 2.0 (que cobre o .NET Framework 4.6.1+ e todas as versões .NET Core/.NET 5+) ou fornecem pacotes multi-alvo. Todas as 11 bibliotecas ativamente mantidas o apoiam plenamente. For new projects in 2026, target . .NET 8 (LTS) .NET 8 (em inglês) IronXL lança atualizações mensais. EPPlus, Aspose.Cells e Syncfusion lançam trimestralmente. ClosedXML e NPOI têm lançamentos irregulares, mas frequentes, impulsionados pela comunidade. SpreadsheetLight não teve uma atualização significativa em anos, uma bandeira vermelha para adoção a longo prazo. Release cadence as a longevity signal: Migração do Excel Interop – O ponto de partida comum Muitas equipes chegam a esta comparação porque estão migrando longe do Microsoft.Office.Interop.Excel. Se é você, aqui está o playbook rápido.Interop requer o Office instalado em todas as máquinas que executam seu código, incluindo servidores. Isso era tolerável em um único Windows Server, mas quebra o momento em que você containeriza, escala horizontalmente ou implanta para o Linux. O padrão de migração é simples, independentemente da biblioteca que você escolher: // Step 1: Remove COM references // Delete: Microsoft.Office.Interop.Excel references from your .csproj // Step 2: Install replacement via NuGet // PM> Install-Package IronXL.Excel (or EPPlus, ClosedXML, etc.) // Step 3: Replace Interop patterns // Interop: xlApp.Workbooks.Add() → IronXL: WorkBook.Create() // Interop: ws.Cells[1,1] = value → IronXL: ws["A1"].Value = value // Interop: wb.SaveAs(path) → IronXL: wb.SaveAs(path) // Step 4: Remove COM cleanup code // Delete: Marshal.ReleaseComObject() calls — no longer needed A maior vitória não é apenas a implantação cross-platform, mas a eliminação das dores de cabeça de limpeza COM. Não mais processos órfãos EXCEL.EXE, não mais chamadas Marshal.ReleaseComObject(), não mais vazamentos de memória de referências COM não liberadas. Cada biblioteca nesta comparação gerencia seus próprios recursos através de padrões padrão .NET IDisposable. Which C# Excel Library Is Right for Your Project? After testing all 12 libraries, here's our honest guidance organized by scenario. We're not going to pretend IronXL is the best choice for every situation, it isn't. Melhor para projetos conscientes do orçamento é o vencedor claro para equipes que precisam de capacidades completas de leitura/escrita em um orçamento zero. licença MIT, desenvolvimento ativo, API intuitiva. O comércio: sem gráficos, e desempenho degrada acima de 50K linhas. é o runner-up, especialmente se você precisar de suporte XLS legacy. ClosedXML NPOI Melhor para aplicações empresariais ou IronXL oferece a API mais limpa e ponto de preço mais baixo quando gráficos e pivotos não são necessários, ele se destaca no trabalho de tubulação de dados, geração de relatórios e conversão cross-format. Aspose.Cells é a escolha certa quando você precisa de cada recurso do Excel sob o sol e o orçamento não é a restrição. IronXL Aspose.Cells Integração RuralCo IronXL Melhor para conjuntos de dados de alto desempenho / grandes foi o principal apresentador em nossos critérios de referência, consistentemente no top 3 em cada operação, com um impressionante 2,9ms para geração de relatórios financeiros. É apenas para escrever e apenas para o futuro, mas se isso se encaixa no seu caso de uso, nada mais se aproxima. e consistentemente colocado no nível superior. Para ingestão de alto desempenho somente de leitura, com sua interface de streaming IDataReader é incomparável. SpreadCheetah Aspose.Cells EPPlus ExcelDataReader Melhores cenários somente para leitura É licenciado pelo MIT, leve, rápido e integra-se nativamente com o System.Data.DataTable. Se você só precisa ingerir dados de planilhas, adicionar uma biblioteca de leitura/escrita completa é desnecessária. ExcelDataReader Melhor para cobertura máxima ou Ambos suportam gráficos, tabelas pivot, sparklines, formatação condicional, validação de dados, VBA e exportação de PDF. A Licença Comunitária gratuita da Syncfusion dá às pequenas equipes acesso a recursos empresariais sem custo, verifique se você se qualifica. Aspose.Cells Syncfusion XlsIO Melhor experiência para desenvolvedores ou oferecem as APIs mais intuitivas com o menor número de caldeiras. Ambos permitem que você vá do Install-Package para um arquivo Excel em funcionamento em menos de 5 linhas de código. IronXL adiciona suporte cross-format (XLS + XLSX + CSV + JSON) e suporte profissional; ClosedXML adiciona licença MIT e uma comunidade maior. IronXL ClosedXML Leitura de arquivos do Excel: a outra metade da equação A maioria das avaliações de bibliotecas se concentra em Os arquivos do Excel, mas muitos aplicativos de produção gastam mais tempo lendo. Aqui está como a experiência de leitura se compara em quatro bibliotecas populares, todas executando a mesma tarefa: carregar um arquivo do Excel existente, iterar através de linhas e extrair dados digitados. Escrevendo // ExcelDataReader — streaming, read-only, lowest overhead using var stream = File.Open("report.xlsx", FileMode.Open, FileAccess.Read); using var reader = ExcelReaderFactory.CreateReader(stream); while (reader.Read()) { string product = reader.GetString(0); double revenue = reader.GetDouble(1); } // IronXL — concise cell-addressing syntax WorkBook wb = WorkBook.Load("report.xlsx"); WorkSheet ws = wb.DefaultWorkSheet; foreach (var row in ws.Rows.Skip(1)) // skip header { string product = row.Columns[0].StringValue; double revenue = row.Columns[1].DoubleValue; } // ClosedXML — similar pattern, IXLRow interface using var wb = new XLWorkbook("report.xlsx"); var ws = wb.Worksheet(1); foreach (var row in ws.RowsUsed().Skip(1)) { string product = row.Cell(1).GetString(); double revenue = row.Cell(2).GetDouble(); } // EPPlus — row/column indexed access using var package = new ExcelPackage(new FileInfo("report.xlsx")); var ws = package.Workbook.Worksheets[0]; for (int r = 2; r <= ws.Dimension.End.Row; r++) { string product = ws.Cells[r, 1].GetValue<string>(); double revenue = ws.Cells[r, 2].GetValue<double>(); } O ExcelDataReader usa um padrão IDataReader avançado apenas, você não pode pular para uma célula específica ou ir para trás. É a opção mais rápida e mais leve para leituras sequenciais. IronXL e ClosedXML ambos oferecem front-over linhas com acesso de célula digitada, embora sua sintaxe seja diferente. EPPlus usa endereçamento de linha/coluna inteira indexada, que é verbosa, mas explícita. Todas as quatro abordagens funcionam, a escolha é se você precisa de acesso aleatório (IronXL, ClosedXML, EPPlus) ou apenas streaming sequencial (ExcelDataReader). Mentiras honrosas: bibliotecas que valem a pena ver Nossos testes de referência mostraram três bibliotecas que não estão em nosso núcleo 12, mas merecem atenção. é uma biblioteca de streaming somente para escrever que dominou nossos benchmarks de velocidade, 2,9ms para geração de relatórios financeiros, consistentemente no top-3 em cada teste.Se você está gerando estruturas de relatórios conhecidos em alto volume e não precisa ler ou aceder aleatoriamente a células, SpreadCheetah é uma ferramenta especializada que vale a pena avaliar. licenciado pelo MIT. Distribuição Distribuição Concentra-se em leituras e escritos de baixa memória usando streaming. Classificou-se em 5o lugar na análise de dados de vendas (638ms, 17.7MB), competindo com EPPlus e Aspose.Cells. Sua API é não convencional (uso pesado de tipos e dicionários anônimos), mas é licenciado pelo MIT e mantido ativamente. Particularmente útil para ambientes com restrições de memória, como o Azure Functions. MINIExcel MINIExcel é um leitor/escritor XLSX leve que ficou em 4o lugar na análise de dados de vendas (347ms, 13,8MB). É menos conhecido, mas oferece desempenho sólido para sua pegada mínima. Velocidade Velocidade Gotchas Comuns: Pitfalls Cada Desenvolvedor Hits Depois de trabalhar com todas as 12 bibliotecas (e os três concorrentes de bônus), compilamos os problemas que os desenvolvedores encontram com mais frequência. A armadilha de codificação no .NET Core ExcelDataReader, NPOI e várias outras bibliotecas exigem que você registe as páginas de código do provedor de codificação antes de ler arquivos XLS (binários) no .NET Core: // Add this ONCE at application startup — before any Excel operations System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); Sem esta linha, você receberá uma NotSupportedException sobre codificação 1252. afeta apenas XLS (não XLSX), apenas em .NET Core/.NET 5+, e a mensagem de erro não aponta claramente para a solução. Dicas para agir em todas as bibliotecas O Excel armazena as datas como números de ponto flutuante (dias desde 1 de janeiro de 1900). Cada biblioteca converte-as para o DateTime de forma ligeiramente diferente, e os casos de borda em torno dos fusos horários, o Nossa recomendação: sempre valide as viagens ao redor da data (escreva → salve → recarregue → leia) com sua biblioteca específica antes de confiar no processamento da data na produção. 1900 leap year bug Leaks de memória de livros de trabalho não dispostos Several libraries implement IDisposable, ClosedXML, EPPlus, SpreadsheetLight, and OpenXML SDK among them. Forgetting using statements can cause memory leaks that only surface under load. IronXL, NPOI, and Aspose.Cells handle cleanup differently (finalizers or explicit Close() methods). The safest pattern across all libraries: // Always wrap in using — even if the library doesn't strictly require it using var wb = /* load or create workbook */; // ... work with workbook ... // Disposal happens automatically at scope exit Requisitos de Contexto da Licença EPPlus O EPPlus 5+ lançará uma LicençaExcepcional na primeira chamada da API se você não tiver definido o contexto da licença. // Required before ANY EPPlus operations in v5+ ExcelPackage.License.SetNonCommercialOrganization("Org Name"); // or: ExcelPackage.License.SetLicenseKey("your-key"); Grandes arquivos OOM em processos de 32 bits Se o seu aplicativo for executado como um processo de 32 bits (ver IntPtr.Size == 4), as bibliotecas baseadas em DOM atingirão o OutOfMemoryException muito mais cedo, muitas vezes em torno de 20.000 a 30.000 linhas, dependendo da contagem de colunas. Isto afeta silenciosamente os aplicativos executados sob o IIS com "Enable 32-bit Applications" definido como verdadeiro, que é o padrão em muitos servidores legados. O que fazer a seguir O ecossistema de bibliotecas .NET Excel é saudável, competitivo e em evolução ativa. Não há uma única biblioteca "melhor", apenas a melhor biblioteca para seu projeto, seu orçamento e seu objetivo de implantação. seu Nossa recomendação: escolha 2-3 candidatos a partir desta comparação, instale-os via NuGet e construa um pequeno protótipo contra seus dados reais.Os exemplos de código acima dão-lhe uma tarefa de início consistente para avaliar a ergonomia da API de cabeça para cabeça. Preste atenção a como cada biblioteca lida. casos de borda, células fundidas, fórmulas, arquivos grandes, requisitos de formatação específicos, porque é aí que surgem as diferenças reais. seu No caso do IRON, o , em e fornecer amostras de trabalho que cobrem os cenários mais comuns. a permite que você teste em produção sem marcas d'água. Começando a documentação Código Exemplos Tutoriais 30 dias de avaliação gratuita Vamos atualizar essa comparação à medida que as bibliotecas lançam novas versões – o ecossistema .NET está se movendo rapidamente, e queremos que isso permaneça o recurso que desejamos ter. As equipes que consideram é a melhor maneira de avaliar se ele se encaixa no seu fluxo de trabalho real. Teste-o com suas próprias planilhas, fórmulas, formatação e ambiente de implantação para ver como ele funciona na prática antes de avançar com uma licença de produção. IronXL, um teste gratuito de 30 dias Perguntas frequentes Estas são as perguntas que vemos mais frequentemente de desenvolvedores que avaliam bibliotecas C# Excel. Cada resposta é baseada em nossa experiência de teste e produção. How do I create an Excel file in C# without Microsoft Office installed? Todas as bibliotecas nesta comparação, exceto o Microsoft.Office.Interop.Excel (que excluímos deliberadamente) funcionam sem o Office. , em , em , etc. – e você pode criar, ler e escrever arquivos XLSX em máquinas sem nenhuma instalação do Office, incluindo servidores Linux e contêineres do Docker. Pacote de instalação IronXL.Excel Pacote de Instalação EPPlus Instalação do pacote ClosedXML Is EPPlus still free for commercial use? No. EPPlus versão 5 (lançado em 2020) e posteriores exigem uma licença comercial para qualquer uso comercial. A última versão gratuita é 4.5.3, que é não mantida e sem anos de correções de bugs e patches de segurança. Se você precisa de uma alternativa gratuita com capacidades semelhantes, ClosedXML (licença MIT) é o caminho de migração mais direto. What's the fastest .NET Excel library for large datasets? Em nossos benchmarks de escrita, GemBox.Spreadsheet e SpreadsheetGear lideraram consistentemente para 100K+ linhas de escrita. Para a ingestão apenas de leitura de arquivos grandes, a interface de streaming IDataReader do ExcelDataReader é a opção mais eficiente em memória.O OpenXML SDK oferece o teto de memória mais baixo através de seu escritor SAX, mas requer significativamente mais código. Which libraries support legacy XLS (97-2003) format? IronXL, NPOI, Aspose.Cells, GemBox.Spreadsheet, ExcelDataReader (apenas leitura), Spire.XLS e SpreadsheetGear suportam o formato binário XLS. Entre as opções gratuitas, o NPOI é a única biblioteca que pode ler e escrever arquivos XLS. Can these libraries run in Docker containers on Linux? Sim — todas as bibliotecas ativamente mantidas (11 das 12, exceto SpreadsheetLight) são executadas em contêineres padrão do .NET 8 Docker no Linux sem dependências nativas. Ao contrário das bibliotecas de renderização de PDF que às vezes requerem fontes de sistema ou motores de navegador, as bibliotecas do Excel são código gerenciado puro. Uma imagem de base mínima de mcr.microsoft.com/dotnet/runtime:8.0 é suficiente. What's your experience? Which C# Excel library are you using in production, and what made you choose it? Drop your thoughts in the comments — we read every one.