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

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

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

Начать курс

Работа с Excel в C# (.NET): подробное руководство по EPPlus и ClosedXML

В современной разработке на платформе .NET часто возникает необходимость программно создавать, читать и редактировать электронные таблицы Excel. Это может быть генерация отчетов, импорт данных из баз данных, экспорт статистики или автоматизация бизнес-процессов. В этой статье мы рассмотрим две самые популярные и мощные библиотеки для работы с Excel в C#: EPPlus и ClosedXML. Обе библиотеки работают с форматом Open XML (XLSX) и не требуют установленного Microsoft Office.

Почему стоит использовать библиотеки для Excel?

Ручное создание XML-файлов для формата XLSX крайне трудоемко и подвержено ошибкам. Библиотеки, такие как EPPlus и ClosedXML, предоставляют высокоуровневый API, который скрывает всю сложность работы с Open XML. Они позволяют:

  • Создавать файлы Excel с нуля с полным контролем над форматированием.
  • Читать данные из существующих таблиц с поддержкой различных типов ячеек.
  • Редактировать ячейки, строки, столбцы и листы.
  • Применять стили, шрифты, цвета, границы и условное форматирование.
  • Работать с формулами, сводными таблицами и диаграммами.
  • Экспортировать данные в PDF (доступно в платной версии EPPlus).

Библиотека EPPlus

EPPlus — это одна из старейших и наиболее функциональных библиотек для работы с Excel в .NET. Она поддерживает все основные возможности формата XLSX, включая диаграммы, сводные таблицы, условное форматирование и VBA-макросы. Начиная с версии 5, EPPlus перешел на модель лицензирования LGPL с дополнительными ограничениями для коммерческого использования (бесплатно для проектов с доходом менее 1 млн долларов в год).

Установка EPPlus

Установить библиотеку можно через NuGet Package Manager:

Install-Package EPPlus

Или через .NET CLI:

dotnet add package EPPlus

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

Следующий код демонстрирует создание файла Excel с заголовками и данными, а также применение базового форматирования:

using OfficeOpenXml;
using OfficeOpenXml.Style;
using System.Drawing;

public void CreateExcelWithEPPlus()
{
    // Установка лицензионного контекста (обязательно для EPPlus 5+)
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

    using (var package = new ExcelPackage())
    {
        // Добавляем новый лист
        var worksheet = package.Workbook.Worksheets.Add("Сотрудники");

        // Заголовки
        worksheet.Cells[1, 1].Value = "Имя";
        worksheet.Cells[1, 2].Value = "Должность";
        worksheet.Cells[1, 3].Value = "Зарплата";

        // Стилизация заголовков
        using (var range = worksheet.Cells[1, 1, 1, 3])
        {
            range.Style.Font.Bold = true;
            range.Style.Fill.PatternType = ExcelFillStyle.Solid;
            range.Style.Fill.BackgroundColor.SetColor(Color.LightBlue);
            range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
        }

        // Данные
        worksheet.Cells[2, 1].Value = "Иван Иванов";
        worksheet.Cells[2, 2].Value = "Разработчик";
        worksheet.Cells[2, 3].Value = 150000;

        worksheet.Cells[3, 1].Value = "Мария Петрова";
        worksheet.Cells[3, 2].Value = "Аналитик";
        worksheet.Cells[3, 3].Value = 120000;

        // Форматирование чисел
        worksheet.Cells[2, 3, 3, 3].Style.Numberformat.Format = "#,##0";

        // Автоширина колонок
        worksheet.Cells[1, 1, 3, 3].AutoFitColumns();

        // Сохраняем файл
        var fileInfo = new FileInfo("employees.xlsx");
        package.SaveAs(fileInfo);
    }
}

Библиотека ClosedXML

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

Установка ClosedXML

Установка через NuGet:

Install-Package ClosedXML

Или через .NET CLI:

dotnet add package ClosedXML

Пример: создание Excel-файла с ClosedXML

Аналогичный пример создания файла с использованием ClosedXML выглядит даже более лаконично:

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