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

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

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

Начать курс

Работа с Excel в C# (.NET): лучшие библиотеки и примеры

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

1. EPPlus — мощный и современный инструмент

EPPlus — это одна из самых популярных библиотек для работы с файлами Excel (.xlsx) в .NET. Она поддерживает практически все возможности Excel: форматирование, диаграммы, сводные таблицы, условное форматирование и многое другое. Начиная с версии 5, EPPlus распространяется по лицензии Polyform Noncommercial (бесплатно для некоммерческого использования), для коммерции требуется покупка лицензии.

Установка

Install-Package EPPlus

Пример: создание простого Excel файла

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["A3"].Value = "Иван";
            worksheet.Cells["B3"].Value = 35;
            worksheet.Cells["C3"].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);
            
            // Автоширина колонок
            worksheet.Cells.AutoFitColumns();

            // Сохраняем
            var file = new FileInfo("Отчёт.xlsx");
            package.SaveAs(file);
        }
    }
}

Плюсы EPPlus:

  • Поддержка сложных объектов: диаграммы, сводные таблицы, спарклайны
  • Высокая производительность при работе с большими файлами
  • Отличная документация и активное сообщество

Минусы: платная коммерческая лицензия, нет поддержки .xls (старый формат).

2. ClosedXML — простота и удобство

ClosedXML — это бесплатная библиотека с открытым исходным кодом, которая предоставляет удобный API для работы с Excel. Она построена на основе OpenXML SDK, но скрывает всю сложность, предлагая интуитивно понятный интерфейс. Идеально подходит для быстрого создания отчётов и таблиц.

Установка

Install-Package ClosedXML

Пример: создание файла с форматированием

using ClosedXML.Excel;

class Program
{
    static void Main()
    {
        using (var workbook = new XLWorkbook())
        {
            var ws = workbook.Worksheets.Add("Продажи");
            
            // Заголовки
            ws.Cell("A1").Value = "Товар";
            ws.Cell("B1").Value = "Количество";
            ws.Cell("C1").Value = "Цена";
            
            // Данные
            ws.Cell("A2").Value = "Ноутбук";
            ws.Cell("B2").Value = 5;
            ws.Cell("C2").Value = 75000;
            
            ws.Cell("A3").Value = "Мышь";
            ws.Cell("B3").Value = 20;
            ws.Cell("C3").Value = 1500;
            
            // Форматирование заголовков
            ws.Range("A1:C1").Style.Font.Bold = true;
            ws.Range("A1:C1").Style.Fill.BackgroundColor = XLColor.LightGray;
            
            // Формула для итога
            ws.Cell("A4").Value = "Итого";
            ws.Cell("C4").FormulaA1 = "=SUM(C2:C3)";
            ws.Cell("C4").Style.Font.Bold = true;
            
            // Автоширина
            ws.Columns().AdjustToContents();
            
            workbook.SaveAs("Продажи.xlsx");
        }
    }
}

Плюсы ClosedXML:

  • Полностью бесплатный (MIT лицензия)
  • Простой и чистый API

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