Работа с 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:
Также в библиотеке
Миграции баз данных в Swift: инструменты и практики для iOS/macOS
Парсинг HTML в C++: Обзор библиотек Gumbo, MyHTML и htmlcxx
Работа с S3 и облачными хранилищами в Swift (iOS/macOS): AWSS3 и Amplify
Работа с ZIP/архивами в C++: библиотеки и примеры кода
Геолокация и карты в Kotlin: Полное руководство по интеграции