: Тествахме 12 библиотеки на C# Excel срещу идентични задачи: създаване на работни книги, четене на големи набори от данни, форматиране на клетки и експортиране в различни платформи.Това ръководство обхваща всичко от опции с отворен код, лицензирани от MIT, до комерсиални пакети от корпоративен клас, с кодове, показатели за ефективност, разходи за лицензиране и рамка за вземане на решения, за да ви помогне да изберете правилната библиотека за вашия проект. TL;DR Прекарахме три седмици, изпълнявайки всяка от 12-те библиотеки в това сравнение чрез идентични тестови сценарии: създаване на работни книги от нулата, четене на 100 000 реда на данни, прилагане на условно форматиране и експортиране в XLSX и CSV както на Windows, така и на Linux. Пълно разкриване: Ние сме екипът на DevRel , една от 12-те библиотеки в това сравнение. Това е казано, ние вярваме, че честните оценки служат на всички по-добре от маркетинговия спин. Ние ще покажем нашата методология, ще признаем нашите предразсъдъци и ще оставим референтните показатели да говорят сами за себе си. Ироничен Ето как изглежда пейзажът на един поглед - тогава ще отидем по-дълбоко във всяка библиотека. // 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"); IronXL изход По-долу ще покажем версията на всяка библиотека на тази задача, защото най-добрият начин за оценка на API е да прочетете кода. Преди да преминем към отделните профили, направете бележка за методологията.Оценихме всяка библиотека в седем измерения: (колко линии за изпълнение на общи задачи), (какви типове файлове можете да четете и пишете), (Графики, пивоти и формули) (Напишете скоростта и използването на паметта в мащаб), (Linux, Docker и облак) (реални разходи, включително скрити такси) и Нито една библиотека не надвишава всичките седем, теглото, което присвоявате на всяко измерение, определя вашия най-добър избор. API ergonomics format support feature depth performance cross-platform support licensing clarity maintenance health Коя C# библиотека на Excel трябва да изберете? Преди да се потопите в 12 отделни профила, ето таблицата за сравнение. Всяко твърдение в тази таблица се проверява спрямо документацията на всяка библиотека и пакета NuGet към февруари 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 Търговски 749 лв. на ден ✅ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅ 3М+ EPPlus Еплъс Търговски 299 лв. на ден ✅ ❌ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 80м+ ClosedXML Затваряне на Мит Свободен ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ ✅ 60м+ NPOI Създаване на Apache 2.0 Свободен ✅ ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ 50м+ Aspose.Cells Търговски 1 199 лв. на ден ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 20м+ Syncfusion XlsIO Търговски / Безплатен * $0–$995/yr ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 15M+ GemBox.Spreadsheet Ексклузивно.Spreadsheet Freemium $0–$890 ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 5 М + OpenXML SDK Мит Свободен ✅ ❌ ❌ ✅ ✅ ✅ ✅ ✅ ❌ 100м+ ExcelDataReader Мит Свободен ✅ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ 70м+ Spire.XLS Spire.XLS Търговски $999/dev ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 3M+ SpreadsheetLight MIT Free ✅ ❌ ✅ ⚠️ ❌ ️ ✅ ❌ ✅ 2M+ SpreadsheetGear Commercial 975 долара/dev ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌ ✅ 1M+ Syncfusion offers a for companies with <$1M revenue and ≤5 developers. free Community License ⚠️ = частична или непроверена поддръжка. Свободен лиценз на Общността The short version, by scenario: → ClosedXML (MIT, mature, active development) Tight budget, full read/write? → IronXL or Aspose.Cells Enterprise-grade with premium support? → Aspose.Cells or Syncfusion XlsIO Maximum feature coverage? Само за четене, максимална скорост? → ExcelDataReader → OpenXML SDK Low-level control, no abstraction? Java порт, Legacy XLS е необходим? → NPOI Сега нека разгледаме всяка библиотека по-подробно. 12 C# библиотеки на Excel, които си струва да знаете през 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 е търговска .NET Excel библиотека от that prioritizes API simplicity and cross-platform deployment. It reads and writes XLS, XLSX, CSV, TSV, and JSON without requiring Microsoft Office. Its extensive set of features also includes creating and editing Microsoft Excel worksheets, the ability to export Excel workbooks, work with formulas, and more. You can even add image formats into your Excel worksheets. Monthly release cadence — the latest version (2026.2) ships with .NET 10 support. Желязен софтуер 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 Изход Excel файл The API uses a WorkBook → WorkSheet → cell-addressing pattern that mirrors how developers think about spreadsheets. Cell addressing supports both A1 notation (ws["B2"]) and range expressions (ws["A1:C10"]), and the FormatString property accepts standard Excel format codes. The library handles formula recalculation automatically when cells are edited. Strengths: Минимален котел, създаване, четене и експортиране на данни в 3-5 реда код. Кръстосани платформи: Windows, Linux, macOS, Docker, Azure, AWS Lambda – всички тествани. Месечни издания с активни поправки на грешки; простотата на ниво API е основният диференциращ фактор, а не суровият пропуск (вижте раздел „Benchmarks“ за честни цифри) Поддържа XLS (наследство) + XLSX + CSV + TSV + JSON в един единствен API Real-world deployment: uses IronXL for nonprofit financial reconciliation, achieving 4× faster payment processing; powers logistics and healthcare Excel automation across Germany Brainycom ThreeB IT Limitations: No chart creation (you can read existing charts, but not generate them programmatically) Няма Pivot Table Generation Commercial license required for production ($749/year for Lite) По-малка общност в сравнение с EPPlus или ClosedXML Teams that need a clean API for reading/writing/exporting Excel data across platforms, don't need chart generation, and value professional support and frequent updates. Strong fit for data pipelines, report generation, and CSV/Excel conversion workflows. Best for: 2. — The Community Favorite Gone Commercial EPPlus EPPlus is one of the most downloaded .NET Excel libraries in history. Originally MIT-licensed, it в версия 5 (2020). последната безплатна версия ( Търговската версия е богата на функции с диаграми, обобщени таблици и мощен двигател за формули. switched to a commercial Polyform license 4.5.3 в Ню Йорк 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 EPPlus uses a ExcelPackage → Workbook → Worksheets hierarchy that closely mirrors the Excel object model. The Cells property accepts A1-style references, and styling is applied through a nested Style object. Note the license configuration line, EPPlus 5+ requires you to set a license context before any operations. Strengths: Massive community and ecosystem, 80M+ NuGet downloads, extensive Stack Overflow coverage Charts, pivot tables, conditional formatting, data validation, VBA support Мощен LoadFromCollection<T>() и LoadFromDataTable() за обектно-до-Excel картографиране Mature formula engine with broad function coverage Limitations: XLSX only, no XLS legacy format support Търговски лиценз, необходим за всякаква търговска употреба от v5 (база от $ 299 / година) Version 4.5.3 (last free version) is unmaintained and missing years of bug fixes Can struggle with memory on very large files (100K+ rows) in some configurations 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 — Изборът на разработчиците с отворен код за Excel API wraps Microsoft's in a developer-friendly API. MIT-licensed, actively maintained (frequent commits on ), and used by millions. It's the go-to recommendation when developers ask for a free, full-featured Excel library on и .NET форуми на общността. Затваряне на OpenXML SDK GitHub Стак 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 Изход API на ClosedXML е интуитивен: XLWorkbook → AddWorksheet → Cell() с адресиране на базата на string. 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 лиценз, истински безплатен за всички цели, включително и за търговски цели Clean, intuitive API that makes OpenXML SDK bearable Активно развитие с редовни издания и отзивчиви поддръжници Good pivot table support and conditional formatting Голяма общност: 60M+ NuGet изтегляния Limitations: XLSX only, no XLS legacy format support No chart creation (a frequently requested feature, still unimplemented) Влошаване на производителността при много големи набори от данни (100K+ реда могат да бъдат бавни или интензивни с памет) 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: NPOI - Портът на Java, който отказва да умре 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. NPOI 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); NPOI Output NPOI изисква изрично създаване на редове и клетки чрез CreateRow() и CreateCell(), няма адрес на клетки, базирани на струни. За XLS файлове, заменете XSSFWorkbook с HSSFWorkbook. Дизайнът, управляван от интерфейса (IWorkbook, ISheet, IRow) означава, че същата логика на кода може да насочи всеки формат, като промени един конструктор. Strengths: Apache 2.0 лиценз, безплатен за търговска употреба Supports both XLS (97-2003) and XLSX, one of few free libraries that handles legacy XLS Chart creation support (basic) Работи с Word (.doc/.docx) и PowerPoint в допълнение към Excel документи Доказано в корпоративен мащаб – пренесено от Apache POI с десетилетия наследство на Java Limitations: Verbose, Java-style API, significantly more boilerplate than C#-native alternatives Изпълнението обикновено е по-бавно от EPPlus, ClosedXML или IronXL за еквивалентни операции Documentation is sparse and often in Chinese — English resources are community-contributed API can be unintuitive for developers unfamiliar with Apache POI Projects that 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: трябва 5. Aspose.Cells — The Enterprise Heavyweight е най-богата на функции библиотека на .NET Excel на разположение. Той поддържа почти всяка функция на Excel: диаграми, обобщени таблици, условно форматиране, валидиране на данни, светилници, резци, VBA макроси и др. Това също е най-скъпият вариант. Aspose го позиционира като пълна платформа за автоматизация на Excel, а не просто библиотека за файлове I/O. Клетки - клетки 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.Cells Output Aspose.Cells използва йерархия на работната книга → работни листове → клетки. Данните са написани с PutValue() вместо директно задаване. Стилирането изисква създаването на обект на стил и прилагането му, повече стъпки от някои конкуренти, но осигурява гранулиран контрол върху всяко свойство за форматиране. Strengths: Most comprehensive feature set in the .NET Excel ecosystem, if Excel can do it, Aspose.Cells probably supports it Excellent performance on large files, optimized for enterprise-scale batch processing Обширна поддръжка на формати: XLSX, XLS, XLSB, XLSM, CSV, ODS, PDF, HTML, изображения Excel-to-PDF рендериране, което е сред най-верните налични 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 Масивната API повърхност може да бъде преобладаваща за прости задачи Heavyweight dependency, the NuGet package is large Предприемачески екипи с бюджет за първокласни инструменти, проекти, които изискват усъвършенствани функции (карти, пивоти, светилници, VBA) и работни потоци, които изискват висока надеждност . Best for: Excel-to-PDF conversion Syncfusion XlsIO – The Suite Play (Съединение за игра) е част от мащабния пакет Essential Studio на Syncfusion. Той предлага широко покритие на функциите на Excel и ползи от екосистемата за контрол на потребителския интерфейс на Syncfusion. Безплатната лиценз на Общността (за компании под 1 милион долара приходи, ≤ 5 разработчици) я прави достъпна за малки екипи. Syncfusion Essential 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 Изход 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: Богати на функции: Използвайте източници на данни за създаване на диаграми, обобщени таблици, условно форматиране, валидиране на данни, маркери на шаблони, светилници Free Community License for small companies, a genuine differentiator Преобразуване Excel-to-PDF включено Deep integration with Syncfusion's Blazor, MAUI, and WPF UI controls Active development with quarterly releases; cross-platform (Windows, Linux, macOS, Docker) Limitations: The Community License has strict eligibility requirements, companies over $1M revenue must purchase Цените на Full Suite са сложни и могат да бъдат скъпи ($ 995 /dev / година за Essential Studio) Library is part of a massive suite, you're pulling in more dependencies than needed for Excel-only work Загриженост на доставчиците: дълбоката интеграция на екосистемата Syncfusion може да затрудни миграцията Teams already using Syncfusion's UI controls, startups qualifying for the free Community License, and projects needing tight integration between Excel processing and Blazor/MAUI front ends. Best for: 7. Средно ниво фокусирано върху изпълнението GemBox.Spreadsheet is a commercially licensed .NET component with a compelling free tier (150 rows, 5 sheets). It advertises strong performance numbers — the company claims 1 million rows in under 3.5 seconds with less than 256MB RAM — and supports an unusually broad range of output formats including PDF, XPS, and image rendering. Available on . Ексклузивно.Spreadsheet Нугът 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 Поддръжка на диаграми, обобщени таблици, условно форматиране и валидиране на данни Free tier for small datasets (useful for prototyping) Clean, idiomatic C# API Limitations: Free tier limited to 150 rows and 5 sheets — too restrictive for most real applications Smaller community than EPPlus, ClosedXML, or NPOI — fewer Stack Overflow answers Professional license starts at ~$890 (one-time) — competitive but not cheap Less name recognition — harder to get team buy-in compared to established alternatives Приложения, които са чувствителни към производителността и обработват големи файлове, проекти, които изискват вграден износ на PDF/изображения от Excel, и екипи, които ценят еднократното лицензиране над абонаментите. Best for: 8. OpenXML SDK — The Foundation Layer provides low-level access to . It's what ClosedXML and many other libraries are built on. MIT-licensed, maintained by Microsoft, and gives you direct control over the XML structure of .xlsx files. The tradeoff: you're essentially writing XML with helpers. Microsoft's Open XML SDK Office Open XML documents 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(); 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 лицензиран, поддържан от Microsoft, като "официален", както се получава Максимален контрол върху структурата на документа, нищо не се абстрахира Ефективно използване на паметта за стрийминг на текстове (достъп до SAX стил) 100M+ NuGet изтегляния, основен слой много други библиотеки зависят от No third-party risk, it's from Microsoft themselves 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 Няма XLS поддръжка, само OOXML (.xlsx) Няма удобни адреси на клетки, съкращения за форматиране или помощници за свързване на данни Скоростна крива на обучение, трябва да разберете спецификацията OOXML Library authors building their own Excel abstraction, scenarios requiring absolute control over document structure, and teams with strict "no third-party dependencies" policies who can absorb the development cost. Best for: 9. ExcelDataReader — The Lightweight Read-Only Specialist прави едно нещо и го прави добре: чете Excel файлове. Той поддържа XLS, XLSX и CSV чрез интерфейс за предаване на IDataReader, който е ефективен в паметта за големи файлове. Скъпи приятели, това трябва да е първото ви съображение. ExcelDataReader read 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 Изход за четене ExcelDataReader връща данни чрез познатите System.Data интерфейси: IDataReader за стрийминг и DataSet/DataTable за материализирани резултати. UseHeaderRow = истинска конфигурация насърчава първия ред към имената на колоните. Strengths: MIT лиценз - безплатно за всичко Леко тегло: малък пакет NuGet, минимални зависимости Streaming reader — memory-efficient for large files Supports both XLS and XLSX plus CSV Интеграцията с DataTable улеснява подаването на данни в бази данни или други системи 70M+ NuGet downloads — proven reliability Limitations: Само за четене — не можете да създавате или модифицирате Excel файлове Без форматиране, стилизиране, диаграми или оценка на формули No cell addressing — data access is row/column based only Requires manual encoding provider registration on .NET Core ETL pipelines, data import workflows, migration tools, and any scenario where you need to Excel data quickly and cheaply without ever writing back to a spreadsheet. Best for: четете 10. - The eIceBlue Contender Състезател Spire.XLS eIceBlue е търговски компонент на Excel с безплатна версия, ограничена до 200 реда и 5 листа. Търговската версия поддържа пълния набор от функции на Excel, включително диаграми, обобщени таблици и Excel-to-PDF конвертиране. eIceBlue също предлага Word, PDF и PowerPoint библиотеки в техния пакет Spire.Office. 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 Изход Spire.XLS следва модел, подобен на Syncfusion, Работна книга → Работен лист → Обхват с свойства за въвеждане на стойности. Методът SaveToFile изисква изрично посочване на целевата версия на Excel. Strengths: Комплексен набор от функции: диаграми, пивоти, условно форматиране, криптиране, цифрови подписи Excel-to-PDF и Excel-to-image преобразуване вградени в Безплатна версия на разположение (200 редове, 5 листа), по-щедра от безплатната версия на GemBox за броене на редове Supports XLS and XLSX Part of the broader Spire.Office suite Limitations: Free version's 200-row limit is too restrictive for most production use Търговските цени започват от ~999 $ / разработчик, на по-високия край Smaller .NET community presence compared to Aspose or Syncfusion Качеството на документацията е непоследователно, някои области на API са слабо документирани 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: SpreadsheetLight – Минималистът is an MIT-licensed library built on OpenXML SDK. It aims to be the "simple" option — easy to learn, lightweight, and sufficient for common spreadsheet tasks. The tradeoff is that development has stalled — the last meaningful update was several years ago. Разпръскване 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"); SpreadsheetLight използва един SLDocument клас като входна точка. Методът SetCellValue е претоварен за различни типове. Това е може би най-простият API в това сравнение - но простотата идва с цена. Strengths: MIT licensed, genuinely free Изключително прост API, най-ниската крива на обучението в това обобщение Леки, минимални зависимости (само OpenXML SDK) Основна поддръжка на диаграми (повече от ClosedXML предлага) Достатъчно добър за прости задачи по отчитане и износ на данни Limitations: Появяват се неподдържани, редки актуализации, последната голяма активност е отпреди години .NET Framework focused, .NET Core/.NET 8+ compatibility is uncertain XLSX only, no XLS support Ограничен набор от функции в сравнение с активните алтернативи Малка общност, ограничено покритие на Stack Overflow и ресурси за отстраняване на неизправности Прости, еднократни задачи за генериране на електронни таблици в проекти на .NET Framework, където се нуждаете от нещо леко и безплатно. Best for: 12. SpreadsheetGear — The Enterprise Veteran Той се позиционира като високопроизводителна, съвместима с Excel изчислителна машина за корпоративни приложения. Библиотеката включва графики, формула с повече от 450 функции и контроли на таблици WinForms/WPF за изграждане на интерактивни потребителски интерфейси като 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 Output API на SpreadsheetGear отблизо отразява обектния модел на Excel VBA, разработчиците, които са написали макроси на Excel, ще се чувстват веднага у дома. Strengths: 450+ built-in functions, one of the most complete formula engines in any .NET library Високопроизводителни изчисления, оптимизирани за сценарии за финансово моделиране WinForms и контролите за потребителски интерфейс на WPF за изграждане на интерактивни интерфейси, подобни на Excel Отлична съвместимост с Excel, насочена към пикселно перфектно представяне Дълъг рекорд, доказано производство в корпоративна среда Limitations: По-висока ценова точка (~ $ 975 / разработчик) с по-малко видима цена, трябва да се свържете с продажбите По-малка общност за разработчици от EPPlus, ClosedXML или NPOI Less modern API feel compared to newer entrants Ограничено присъствие на съвременните платформи на общността (HackerNoon, Dev.to и др.) No free tier or community edition Financial applications needing a powerful calculation engine, desktop applications requiring embedded spreadsheet UI controls, and enterprise environments where Excel VBA migration is the use case. Best for: Функционална среща: Какво може да направи всяка библиотека всъщност? Beyond the basics of reading and writing cells, Excel libraries differ dramatically in their advanced feature support. Here's what we found when we tested features that matter in production applications. 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 ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ Затваряне на ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ след ✅ ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ Клетки - клетки ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ Синхронизиране ✅ ✅ ❌ ✅ ✅ ✅ ✅ ❌ ✅ Гембокс ✅ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ✅ Отворете SDK ✅ ❌ ❌ ✅ ❌ ❌ ❌ ❌ ❌ ExcelDataReader ✅ ✅ ❌ ❌ ✅ ❌ ❌ ❌ ❌ Spire.XLS ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅ ✅ Разпръскване ✅ ❌ ❌ ❌ ✅ ❌ ❌ ❌ ❌ Разпределител ✅ ✅ ❌ ❌ ✅ ❌ ❌ ❌ ✅ The format support gap is significant. If you need for free, NPOI is your only real option. If you need , гледате Aspose.Cells, Syncfusion, GemBox, Spire.XLS или SpreadsheetGear, всички търговски. силата на IronXL тук е единният API за XLSX + XLS + CSV + TSV + JSON, практична комбинация за работа с тръбопроводи за данни. XLS legacy support PDF export from Excel Графики, обобщени таблици и разширени функции 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) Ироничен ❌ ❌ ✅ ✅ ✅ ✅ (самостоятелно изтегляне) Еплъс ✅ ✅ ✅ ✅ ✅ ✅ Затваряне на ❌ ✅ ✅ ✅ ✅ ✅ след ✅ (basic) ❌ ✅ ✅ ✅ ✅ Клетки - клетки ✅ ✅ ✅ ✅ ✅ ✅ Синхронизиране ✅ ✅ ✅ ✅ ✅ ✅ Гембокс ✅ ✅ ✅ ✅ ✅ ✅ OpenXML SDK ✅ (ръчно XML) ✅ (ръчно XML) ✅ (ръчно XML) ✅ (ръчно XML) ✅ ❌ ExcelDataReader ❌ ❌ ❌ ❌ ❌ ❌ Spire.XLS ✅ ✅ ✅ ✅ ✅ ✅ Разпръскване (основно) ❌ ✅ ✅ ✅ ✅ Разпределител ✅ ❌ ✅ ✅ ✅ ✅ (450+ функции) Търговията тук е ясна. ако имате нужда , you need EPPlus, Aspose.Cells, Syncfusion, GemBox, or Spire.XLS. IronXL and ClosedXML both lack chart creation — an honest limitation worth acknowledging. For read/write data work without charts, both offer cleaner APIs than the chart-capable alternatives. chart and pivot table creation Изпълнение: Бенчмаркови резултати в реалните операции Твърденията за ефективност без методология са маркетинг. Ето как структурирахме нашите тестове и резултатите вероятно ще ви изненадат. Методологията Изпълнихме стандартизиран пакет от референтни показатели в 15 библиотеки (нашите основни 12 плюс) , , and Вместо една синтетична задача, тествахме четири операции в реалния свят, които отразяват това, което разработчиците всъщност изграждат с библиотеки на Excel: разпространение миниатюри Бързо : Create a 12-month statement workbook with formulas and formatting Financial Report Generation : Build a 500-item, 3-warehouse tracking spreadsheet with cross-references Inventory Tracking Анализ на данните за продажбите: обработка и записване на 10 000 транзакции с агрегиране : Generate a 250-employee payroll workbook with calculated fields Employee Payroll Processing Всеки тест измерва времето за изпълнение на часовника на стената (ms) и пиковата памет (MB). Тестовете се изпълняват на .NET 8 с множество итерации; ние отчитаме записаните стойности от нашия бенчмарк. Само тестовете, които са завършени успешно, се отчитат, библиотеките, които са се провалили в дадена операция, са изключени от тази таблица, а не санкционирани. 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 разпространение 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 Офис 257.6 2.1 6 IronXL 498.1 4.2 SpreadCheetah's 2.9ms is striking, it's a write-only, forward-only streaming library designed explicitly for maximum throughput. It sacrifices API convenience (no random cell access, no reading) for raw speed. For pure report generation where you know the output structure upfront, it's essentially unbeatable. Aspose.Cells and DevExpress cluster closely in the 53-56ms range, representing the top tier among full-featured libraries. IronXL следи тук при 498ms. За еднократен месечен отчет, това е незабележимо за крайния потребител. За партидна работа, генерираща хиляди отчети, тя се превръща в преценка, а SpreadCheetah или Aspose.Cells биха били по-добрият избор за този конкретен работен товар. Проследяване на запасите (500 артикула, 3 складове) 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 ExcelMapper 54.1 4.9 3 разпространение 56.3 2.1 4 Клетки - клетки 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 Офис 16,659.5 14.4 EPPlus доминира тази операция в средата на сложността, следвана от SpreadCheetah и ExcelMapper. Номерата на паметта разказват важна история: Spire.XLS постига конкурентна скорост само с 1.4MB, най-ефективният резултат от този тест за паметта. 18.7MB отпечатъкът на IronXL в ранг 7 отразява неговата архитектура, базирана на DOM, зареждаща пълния модел на документа в паметта. Това означава, че 1.3 секунди за работна книга с инвентар от 500 елемента са напълно приемливи за интерактивна употреба, това е вид надпис, който оптимизирате само когато се появява в профилирането. Анализ на данните за продажбите (10 000 транзакции) This is the heaviest test, 10,000 rows with aggregation. It separates libraries built for scale from those optimized for convenience. 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 Помощник 140.3 9.3 2 ClosedXML 262.5 16.4 3 SpreadCheetah 289.7 15.9 4 Бързо 346.7 13.8 5 MiniExcel 638.3 17.7 6 EPPlus 671.0 21.3 7 Aspose.Cells 696.5 15.3 8 след 1 0304 35.0 9 Пъзел.xls 2 015 5 26.8 10 Деекспрес 4,860.6 25.0 11 IronXL 11,322.9 80.9 Нека бъдем честни: IronXL завършва на последно място в този тест, а разликата е значителна. При 11.3 секунди и 80.9 MB, тя е 80x по-бавна от CsvHelper и 43x по-бавна от ClosedXML. CsvHelper печели, защото е предназначен за целта CSV анализатор - не пълна библиотека на Excel - и избягва излишъка от OOXML документация. The practical implication: if you're building a data pipeline that processes 10,000+ transaction datasets repeatedly, IronXL is not the right tool for that specific job. EPPlus, ClosedXML, or a streaming library like SpreadCheetah will serve you dramatically better. IronXL's strengths — API simplicity, cross-format support, professional support — show up in other dimensions of this evaluation, not raw throughput at scale. Employee Payroll Processing (250 Employees) Only three libraries completed this complex, multi-sheet operation successfully: 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 Клетки - клетки 404.0 3.8 2 IronXL 2,893.0 12.5 3 Пъзел.xls 4 323 0 Н / А * Spire.XLS съобщава за отрицателно измерване на паметта - вероятно артефакт за измерване. Повечето библиотеки или не са опитали този тест, или не са успели да го завършат. Фактът, че само три библиотеки са успели, говори за сложността на многослойните, формулируеми работни книги с изчислени полета. Aspose.Cells води убедително. IronXL завършва на второ място, по-бавно, но успешно завършва операцията и произвежда правилния изход, който повечето конкуренти не могат да управляват. Какво ни казват бенчмарковете (и какво не казват) От тези данни произтичат три модела: Първо, . SpreadCheetah appears in the top 3 across every test it entered, but it can't read files, can't do random cell access, and can't apply complex formatting after writing. If speed is your primary concern and you're generating known report structures, it's worth adding to your evaluation list. Second, in the mid-tier. Aspose.Cells, EPPlus, and Spire.XLS generally trade positions depending on the operation type. Third, Неговата архитектура, базирана на DOM, и абстракциите на API на високо ниво въвеждат овърхед, който се появява в мащаб, компромисът за този чист API с 3 линии, който видяхте в въведението. streaming/write-only libraries dominate speed benchmarks full-featured commercial libraries cluster together IronXL's performance profile favors simplicity over speed В практиката повечето бизнес приложения се обработват добре под 10 000 реда.Месечен отчет за продажбите с 500 реда, тримесечен износ с 2000 транзакции, инвентарна снимка с няколкостотин SKU, тези работни натоварвания се изпълняват удобно на всяка библиотека в това сравнение, включително IronXL.Разликите в производителността стават релевантни само по мащаб и дори тогава, правилният отговор често е да изберете правилния инструмент за всяка конкретна работа, а не да принудите една библиотека да се справи с всичко. Поддръжка на платформите: Ще работи ли на Linux, Docker и Cloud? Ако приложението ви се разгръща в Docker контейнери, Azure App Service на Linux или AWS Lambda, библиотеката на Excel трябва да работи без специфични за 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 ✅ ✅ ✅ ✅ ✅ ✅ ❌ Ироничен ✅ ✅ ✅ ✅ ✅ ✅ ❌ Еплъс ✅ ✅ ✅ ✅ ✅ ✅ ❌ Затваряне на ✅ ✅ ✅ ✅ ✅ ✅ ❌ след ✅ ✅ ✅ ✅ ✅ ✅ ❌ Aspose.Cells ✅ ✅ ✅ ✅ ✅ ✅ ❌ Синхронизиране ✅ ✅ ✅ ✅ ✅ ✅ ✅ (server) Гембокс ✅ ✅ ✅ ✅ ✅ ✅ ❌ Отворете SDK ✅ ✅ ✅ ✅ ✅ ✅ ✅ ExcelDataReader ✅ ✅ ✅ ✅ ✅ ✅ ❌ Пъзел.xls ✅ ✅ ✅ ✅ ✅ ⚠️ ❌ Разпръскване ✅ ️ ️ ️ ⚠️ ❌ ❌ Разпределител ✅ ✅ ✅ ✅ ✅ ✅ ❌ Добрата новина е, че повечето модерни, активно поддържани библиотеки работят на различни платформи в .NET 8+. SpreadsheetLight е най-отдалечената, фокусът на .NET Framework прави разгръщането на различни платформи ненадеждно. (двигателят за рендериране е твърде тежък), но сървърният Blazor работи добре с всички тях. Клиентска страна Всички библиотеки, които са насочени към или .NET 6+ работи в минимални Docker контейнери ( Не са необходими native OS зависимост, за разлика от PDF библиотеки, Excel библиотеки са чист управляван код. Docker consideration .NET Стандарт 2.0 mcr.microsoft.com/dotnet/продължително време: 8.0 Лицензиране и ценообразуване: Колко ще струва това на вашия екип? Лицензирането е мястото, където библиотеките на Excel се различават драстично. Опции с отворен код 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 Затваряне на Мит Безплатно Без търговска поддръжка; само общински фиксирани след Създаване на Apache 2.0 Безплатно Трябва да включва известие за лиценз; без търговска поддръжка Отворете SDK Мит Безплатно Поддържани от Microsoft, но без специална поддръжка на Excel ExcelDataReader Мит Безплатно Само за четене; ще ви е необходима друга библиотека за писане Разпръскване Мит Безплатно Изглежда неподдържано; риск от непоправени бъгове "Безплатните" библиотеки носят скрити разходи: няма поддръжка, подкрепена от SLA, няма гарантирани срокове за фиксиране и времето за инженеринг, което вашият екип прекарва за отстраняване на проблеми, които търговски доставчик би се справил.За хоби проекти и прототипи, тези разходи са приемливи. и и двете позволяват неограничено търговско използване, разликата е в това, което provides versus what a vendor guarantees. с лиценз Лиценз за Apache 2.0 community Търговски опции в сравнение 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 Ироничен $749/yr (Lite) $ 749 – $ 2 999 / година 30-дневен съдебен процес Да (допълнителна информация) 24 / 5 Инженеринг Еплъс $ 299 / година (база) $ 299 – $ 599 / година V4.5.3 (не е актуализиран) Да (допълнителна информация) Електронна поща Клетки - клетки 1 199 лв. на ден $1,199 – $11,198 на година Воден знак (воден знак) Да (не е скъпо) Този приоритет Синхронизиране $0 – $995 / година Per-suite Лиценз на Общността* Включени в Suite ✅ (платени триъгълници) Гембокс ~$890 (one-time) Per-developer 150 лв. безплатно Еднократно 12 месеца Пъзел.xls от $999 / DEV Пер-разработчик 200 редове / 5 листа Добавяне Електронна поща Разпределител ~975 долара/dev Пер-разработчик Никой Контакти за продажби Електронна поща Syncfusion Community License: безплатно за компании с годишен брутен доход < 1 млн. долара и ≤ 5 разработчици. Заслужава да се отбележи. EPPlus е лицензиран от MIT през версия 4.5.3 (2018). Версия 5 е преместена на Polyform Noncommercial, а по-късните версии изискват търговски лиценз за всякаква търговска употреба. Много наследствени проекти все още се позовават на 4.5.3, ако това сте вие, знайте, че работите на неподдържана версия с непокрепени грешки. Миграцията към EPPlus 7+ изисква закупуване на лиценз; миграцията към ClosedXML или IronXL е алтернативен път. The EPPlus licensing story Ироничният Iron Suite – всичките 10 Iron Software продукти в комплект – предлагат значителни спестявания, ако имате нужда и от възможности за PDF, OCR или баркод. licensing tiers .NET съвместимост: От Framework до .NET 10 Екосистемата на .NET е фрагментирана в различни версии и не всяка библиотека е запазила темпото си. 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 ✅ ✅ ✅ ✅ ✅ ✅ ✅ Ироничен ✅ ✅ ✅ ✅ ✅ ✅ ✅ EPPlus ✅ ✅ ✅ ✅ ✅ ✅ ✅ Затваряне на ✅ ✅ ✅ ✅ ✅ ✅ ✅ след ✅ ✅ ✅ ✅ ✅ ✅ ✅ Клетки - клетки ✅ ✅ ✅ ✅ ✅ ✅ ✅ Синхронизиране ✅ ✅ ✅ ✅ ✅ ✅ ✅ Гембокс ✅ ✅ ✅ ✅ ✅ ✅ ✅ Отворете SDK ✅ ✅ ✅ ✅ ✅ ✅ ✅ ExcelDataReader ✅ ✅ ✅ ✅ ✅ ✅ ✅ Пъзел.xls ✅ ✅ ✅ ✅ ✅ ✅ ✅ Разпръскване ✅ ⚠️ ️ ️ ❌ ❌ ❌ Разпределител ✅ ✅ ✅ ✅ ✅ ✅ ✅ Всяка друга библиотека е насочена към .NET Standard 2.0 (което обхваща .NET Framework 4.6.1+ и всички .NET Core/.NET 5+ версии) или предоставя многоцелеви пакети. Всички 11 активно поддържани библиотеки го подкрепят напълно. For new projects in 2026, target . .NET 8 (LTS) .NET 8 (на английски език) IronXL изпраща месечни актуализации. EPPlus, Aspose.Cells и Syncfusion излизат тримесечно. ClosedXML и NPOI имат нередовни, но чести издания, управлявани от общността. SpreadsheetLight не е имал значима актуализация в продължение на години, червен флаг за дългосрочно приемане. Release cadence as a longevity signal: Мигриране от Excel Interop — Общата отправна точка Много екипи стигат до това сравнение, защото мигрират далеч от Microsoft.Office.Interop.Excel. Ако това сте вие, ето бързата игрална книга.Interop изисква Office, инсталиран на всяка машина, която изпълнява вашия код, включително сървъри.Това беше толерантно на един Windows Server, но това нарушава момента, в който контейнеризирате, мащабирате хоризонтално или разгърнете в Linux. Моделът на миграция е прост, независимо от библиотеката, която избирате: // 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 Най-голямата печалба не е просто разгръщането на платформи, а елиминирането на главоболието при почистването на COM. Няма повече осиротени EXCEL.EXE процеси, няма повече Marshal.ReleaseComObject() повиквания, няма повече изтичане на памет от неизправени COM препратки. Всяка библиотека в това сравнение управлява собствените си ресурси чрез стандартни .NET IDisposable модели. Коя библиотека на C# Excel е подходяща за вашия проект? След като тестваме всички 12 библиотеки, тук е нашето честно ръководство, организирано по сценарий.Ние няма да се преструваме, че IronXL е най-добрият избор за всяка ситуация, не е. Най-доброто за проекти с бюджетно съзнание е ясният победител за екипи, които се нуждаят от пълни възможности за четене / писане с нулев бюджет. лиценз на MIT, активно развитие, интуитивно API. Това е най-доброто решение, особено ако имате нужда от поддръжка на XLS. ClosedXML NPOI Най-доброто за корпоративни приложения или IronXL предлага по-чист API и по-ниска цена, когато не се изискват диаграми и пивоти, той се отличава с работа с тръбопроводи за данни, генериране на отчети и трансформация на формати. Aspose.Cells е правилният избор, когато имате нужда от всяка функция на Excel под слънцето и бюджетът не е ограничението. IronXL Aspose.Cells RuralCo интегриран IronXL Най-добър за високопроизводителни / големи набори от данни е изключителен изпълнител в нашите референтни показатели, последователно топ 3 във всяка операция, с зашеметяващо 2.9ms за генериране на финансови отчети. Той е само за писане и само за напред, но ако това отговаря на вашия случай на употреба, нищо друго не идва близо. и Постоянно се поставя в най-високото ниво.За високопроизводително поглъщане само за четене, с неговия стрийминг интерфейс IDataReader е несравним. SpreadCheetah Aspose.Cells EPPlus ExcelDataReader Най-добрите сценарии само за четене Той е лицензиран от MIT, лесен, бърз и се интегрира естествено със System.Data.DataTable. Ако просто трябва да поглъщате данни от таблици, добавянето на пълна библиотека за четене / писане е ненужно. ExcelDataReader Най-доброто за максимално покритие или Поддържа диаграми, обобщени таблици, светилници, условно форматиране, валидиране на данни, VBA и износ на PDF. Безплатната Общностна Лицензия на Syncfusion дава на малките екипи достъп до корпоративни функции без никакви разходи, проверете дали се квалифицирате. Aspose.Cells Syncfusion XlsIO Най-добрият опит за разработчици или И двете ви позволяват да преминете от Install-Package към работен Excel файл в по-малко от 5 реда код. IronXL добавя поддръжка на кръстосани формати (XLS + XLSX + CSV + JSON) и професионална поддръжка; ClosedXML добавя MIT лицензиране и по-голяма общност. IronXL ClosedXML Четене на Excel файлове: другата половина на уравнението По-голямата част от библиотеките са съсредоточени върху Ето как четенето се сравнява в четири популярни библиотеки, всички изпълняващи една и съща задача: зареждане на съществуващ файл на Excel, повторение през редове и извличане на въведените данни. писане // 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>(); } ExcelDataReader използва шаблон само за напред, IDataReader, не можете да скочите до конкретна клетка или да се върнете назад. Това е най-бързият и най-лекият вариант за последователно четене. IronXL и ClosedXML предлагат предна линия над редове с въведен достъп до клетки, въпреки че тяхната синтаксис се различава. EPPlus използва цяло индексиран ред / колона адресиране, което е безсмислено, но експлицитно. Всички четири подхода работят, изборът идва до това дали имате нужда от случайно достъп (IronXL, ClosedXML, EPPlus) или просто последователно стрийминг (ExcelDataReader). Следваща публикация: Библиотеки, които си струва да се гледат Нашите тестове за референтни стойности разкриха три библиотеки, които не са в нашето ядро 12, но заслужават внимание. е само за писане, само за поточно предаване библиотека, която доминира нашите скоростни референтни показатели, 2.9ms за генериране на финансови отчети, последователно топ 3 във всеки тест.Ако генерирате известни структури отчети с голям обем и не е необходимо да четете или случайно да получите достъп до клетки, SpreadCheetah е специализиран инструмент, който си струва да се оцени. SpreadCheetah разпространение фокусира се върху четене и писане с ниска памет чрез стрийминг. Той се нарежда на пето място в анализа на данните за продажбите (638ms, 17.7MB), конкурентен с EPPlus и Aspose.Cells. Неговият API е неконвенционален (тежко използване на анонимни типове и речници), но е лицензиран от MIT и активно поддържан. миниатюри миниатюри е лек XLSX четец / писател, който се нарежда на четвърто място в анализа на данните за продажбите (347ms, 13.8MB). Той е по-малко известен, но осигурява солидна производителност за минималния си отпечатък. Бързо Бързо Common Gotchas: Pitfalls Всеки разработчик удари След като работим с всичките 12 библиотеки (и трите бонусни състезатели), съставихме проблемите, които най-често се срещат при разработчиците. Кодиране в .NET Core ExcelDataReader, NPOI и няколко други библиотеки изискват от вас да регистрирате доставчика на кодиращите страници, преди да четете XLS (бинарни) файлове в .NET Core: // Add this ONCE at application startup — before any Excel operations System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); Без този ред ще получите NotSupportedException за кодирането 1252. Това засяга само XLS (не XLSX), само на .NET Core/.NET 5+, и съобщението за грешка не показва ясно решението. Дата на работа в библиотеките Excel stores dates as floating-point numbers (days since January 1, 1900). Every library converts these to DateTime slightly differently, and edge cases around time zones, the , и нулеви дати ще ви хапят, ако не сте внимателни.Нашата препоръка: винаги валидирайте обиколки на дати (напишете → запишете → презаредите → прочетете) с вашата конкретна библиотека, преди да се доверите на обработката на дати в производството. 1900 лепкава година Bug Изтичане на памет от неупоменати работни книги Няколко библиотеки прилагат IDisposable, ClosedXML, EPPlus, SpreadsheetLight и OpenXML SDK сред тях. Забравянето да се използват изказвания може да причини изтичане на памет, което само повърхност под натоварване. IronXL, NPOI и Aspose.Cells се справят с почистването по различен начин (финализатори или експлицитни методи Close()). Най-сигурният модел във всички библиотеки: // 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 Изискване за контекст на лиценза на EPPlus EPPlus 5+ ще хвърли LicenseException при първото повикване на API, ако не сте задали контекста на лиценза. // Required before ANY EPPlus operations in v5+ ExcelPackage.License.SetNonCommercialOrganization("Org Name"); // or: ExcelPackage.License.SetLicenseKey("your-key"); Големи OOM файлове на 32-битови процеси Ако приложението ви работи като 32-битов процес (проверете IntPtr.Size == 4), библиотеките на базата на DOM ще ударят OutOfMemoryException много по-рано, често около 20 000-30 000 реда в зависимост от броя на колоните. Това мълчаливо засяга приложенията, работещи под IIS с "Enable 32-bit Applications" зададен на истина, което е по подразбиране на много наследствени сървъри. Какво да правим следващо Екосистемата на библиотеката .NET Excel е здравословна, конкурентна и активно развиваща се. Няма една "най-добра" библиотека, само най-добрата библиотека за Вашият проект, вашият бюджет и целта ви за разполагане. Твоята Нашата препоръка: изберете 2-3 кандидати от това сравнение, инсталирайте ги чрез NuGet и изградете малък прототип срещу вашите реални данни. Примерите за код по-горе ви дават последователна начална задача за оценка на ергономиката на API. съединени клетки, формули, големи файлове, специфични изисквания за форматиране, защото това е мястото, където се появяват истинските различия. Твоята За IronXL по-специално, на , и Осигуряване на работна извадка, обхващаща най-често срещаните сценарии. Позволява ви да тествате в производство без водни знаци. Започва документацията Примери за код Туториалите 30-дневен безплатен пробен период Ще актуализираме това сравнение, когато библиотеките пуснат нови версии – .NET екосистемата се движи бързо и искаме това да остане ресурсът, който искахме да имаме. Екипи, които обмислят Тествайте го с вашите собствени таблици, формули, форматиране и среда за разполагане, за да видите как работи на практика, преди да преминете напред с лиценз за производство. IronXL, 30-дневен безплатен пробен период Често задавани въпроси Това са най-често срещаните въпроси от разработчиците, които оценяват библиотеките на C# Excel. Всеки отговор се основава на нашия опит в тестването и производството. How do I create an Excel file in C# without Microsoft Office installed? Всяка библиотека в това сравнение, с изключение на Microsoft.Office.Interop.Excel (което ние умишлено изключихме) работи без Office. , , , и т.н. — и можете да създавате, четете и пишете XLSX файлове на машини без никаква инсталация на Office, включително Linux сървъри и Docker контейнери. Инсталиране на пакета IronXL.Excel Инсталиране на пакета EPPlus Пакет за инсталиране ClosedXML Is EPPlus still free for commercial use? No. EPPlus version 5 (released 2020) and later require a commercial license for any commercial use. The last free version is 4.5.3, which is unmaintained and missing years of bug fixes and security patches. If you need a free alternative with similar capabilities, ClosedXML (MIT license) is the most direct migration path. What's the fastest .NET Excel library for large datasets? In our write benchmarks, GemBox.Spreadsheet and SpreadsheetGear consistently led for 100K+ row writes. For read-only ingestion of large files, ExcelDataReader's streaming IDataReader interface is the most memory-efficient option. OpenXML SDK offers the lowest memory ceiling through its SAX writer, but requires significantly more code. Which libraries support legacy XLS (97-2003) format? IronXL, NPOI, Aspose.Cells, GemBox.Spreadsheet, ExcelDataReader (само за четене), Spire.XLS и SpreadsheetGear всички поддържат двоичния формат XLS. Сред безплатните опции, NPOI е единствената библиотека, която може да чете и пише XLS файлове. Can these libraries run in Docker containers on Linux? Да — всички активно поддържани библиотеки (11 от 12, с изключение на SpreadsheetLight) се изпълняват в стандартни .NET 8 Docker контейнери на Linux без вродени зависимости. За разлика от библиотеките за възпроизвеждане на PDF, които понякога изискват системни шрифтове или браузърни двигатели, библиотеките на Excel са чист управляем код. Достатъчно е минимално базисно изображение на mcr.microsoft.com/dotnet/runtime:8.0. 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.