Работа с 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 выглядит даже более лаконично: