Работа с Excel в C# (.NET): библиотеки EPPlus, ClosedXML и NPOI

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Работа с Excel в C# (.NET): обзор популярных библиотек

В современной разработке на платформе .NET часто возникает необходимость программного взаимодействия с файлами Microsoft Excel. Это может быть создание отчетов, импорт данных, экспорт таблиц или автоматизация документооборота. В данной статье мы рассмотрим три наиболее популярные библиотеки для работы с Excel в C#: EPPlus, ClosedXML и NPOI. Каждая из них имеет свои особенности, преимущества и ограничения.

1. EPPlus — мощный инструмент для работы с XLSX

EPPlus — это одна из самых популярных библиотек для работы с форматом Office Open XML (XLSX). Она предоставляет обширный API для создания, чтения и форматирования Excel-документов. Начиная с версии 5, EPPlus распространяется по лицензии Polyform Noncommercial (бесплатно только для некоммерческого использования), однако для коммерческих проектов требуется покупка лицензии.

Основные возможности:

  • Полная поддержка форматирования ячеек (шрифты, цвета, границы, выравнивание)
  • Работа с диаграммами, сводными таблицами и условным форматированием
  • Поддержка формул и вычислений
  • Работа с изображениями и комментариями
  • Высокая производительность при работе с большими файлами

Пример создания Excel-файла с помощью EPPlus:

using OfficeOpenXml;

class Program
{
    static void Main()
    {
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // Для коммерции требуется лицензия
        
        using (var package = new ExcelPackage())
        {
            var worksheet = package.Workbook.Worksheets.Add("Отчет");
            
            // Заполняем заголовки
            worksheet.Cells["A1"].Value = "Имя";
            worksheet.Cells["B1"].Value = "Возраст";
            worksheet.Cells["C1"].Value = "Город";
            
            // Заполняем данные
            worksheet.Cells["A2"].Value = "Анна";
            worksheet.Cells["B2"].Value = 28;
            worksheet.Cells["C2"].Value = "Москва";
            
            // Форматирование
            worksheet.Cells["A1:C1"].Style.Font.Bold = true;
            worksheet.Cells["A1:C1"].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
            worksheet.Cells["A1:C1"].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightBlue);
            
            // Сохраняем файл
            package.SaveAs(new FileInfo("report.xlsx"));
        }
    }
}

2. ClosedXML — простой и интуитивно понятный API

ClosedXML — это библиотека с открытым исходным кодом (лицензия MIT), которая предоставляет удобный и лаконичный интерфейс для работы с XLSX-файлами. Она построена на основе DocumentFormat.OpenXml, но скрывает сложность низкоуровневого API. ClosedXML идеально подходит для быстрого создания отчетов и простых таблиц.

Преимущества ClosedXML:

  • Простой и читаемый синтаксис
  • Полностью бесплатна для коммерческого использования
  • Хорошая поддержка стилей и форматирования
  • Встроенная поддержка работы с датами и формулами

Пример чтения данных из Excel с помощью ClosedXML:

using ClosedXML.Excel;

class Program
{
    static void Main()
    {
        using (var workbook = new XLWorkbook("data.xlsx"))
        {
            var worksheet = workbook.Worksheet(1);
            
            // Читаем данные построчно
            foreach (var row in worksheet.RowsUsed())
            {
                var name = row.Cell(1).GetValue<string>();
                var age = row.Cell(2).GetValue<int>();
                var city = row.Cell(3).GetValue<string>();
                
                Console.WriteLine($"{name}, {age}, {city}");
            }
        }
    }
}

3. NPOI — универсальное решение для XLS и XLSX

NPOI — это порт популярной Java-библиотеки Apache POI для .NET. Главное преимущество NPOI — поддержка как старого формата XLS (Excel 97-2003), так и нового XLSX. Библиотека распространяется по лицензии Apache 2.0, что делает её полностью бесплатной. NPOI идеально подходит для проектов, где требуется совместимость с устаревшими версиями Excel.

Ключевые особенности NPOI:

  • Поддержка форматов XLS (HSSF) и XLSX (XSSF)
  • Работа с формулами, стилями и условным форматированием
  • Поддержка макросов и VBA
  • Немного более сложный API по сравнению с ClosedXML

Пример создания файла XLS с помощью NPOI:

Рекомендаций