Создание документов Excel является одной из распространенных задач для разработчиков, работающих с данными и отчетами. Однако не всегда на сервере или рабочей машине установлен Microsoft Office, что заставляет искать альтернативные способы генерации файлов .XLS и .XLSX. В этой статье мы рассмотрим, как можно создавать файлы Excel в C# без необходимости установки Office, используя сторонние библиотеки.
Введение в форматы файлов Excel
Прежде чем перейти к созданию файлов Excel, давайте разберемся с форматами файлов. Excel поддерживает несколько форматов, но два наиболее распространенных – это .XLS (используется в версиях до Excel 2007) и .XLSX (формат, основанный на XML, используемый начиная с Excel 2007). Формат .XLSX более современный и предпочтительный из-за меньшего размера файла и лучшей структуры данных.
Библиотеки для работы с Excel в C#
Для создания и редактирования файлов Excel без установки Office существуют различные библиотеки. Некоторые из них:
- ClosedXML
- EPPlus
- NPOI
- OpenXML SDK
Эти библиотеки позволяют работать с файлами Excel непосредственно из кода C#, предоставляя удобные API для манипулирования данными и форматами ячеек.
Установка библиотеки ClosedXML
Для примера мы будем использовать библиотеку ClosedXML, которая является оберткой над OpenXML SDK и облегчает работу с .XLSX файлами. Установить ClosedXML можно через NuGet Package Manager:
Install-Package ClosedXML
или через .NET CLI:
dotnet add package ClosedXML
После установки библиотеки можно приступать к кодированию.
Создание нового файла Excel с помощью ClosedXML
Создадим простой Excel файл с одним листом и несколькими ячейками данных:
using ClosedXML.Excel;
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value = "Hello";
worksheet.Cell("A2").Value = "World";
workbook.SaveAs("HelloWorld.xlsx");
В этом примере мы создаем новую книгу, добавляем лист, заполняем ячейки A1 и A2 текстом и сохраняем файл с именем “HelloWorld.xlsx”.
Форматирование ячеек в Excel
ClosedXML позволяет легко форматировать ячейки, например, изменять шрифт, цвет и размер текста:
var cell = worksheet.Cell("A1");
cell.Style.Font.Bold = true;
cell.Style.Font.FontColor = XLColor.DarkRed;
cell.Style.Font.FontSize = 20;
Здесь мы делаем текст в ячейке A1 жирным, красного цвета и увеличиваем размер шрифта до 20.
Работа с формулами
ClosedXML также поддерживает использование формул Excel. Например, чтобы суммировать значения в диапазоне ячеек:
worksheet.Cell("A3").FormulaA1 = "SUM(A1:A2)";
После открытия файла в Excel формула будет автоматически рассчитана.
Импорт данных из коллекций
Можно также импортировать данные напрямую из коллекций объектов:
var data = new List<(string Name, int Age)>
{
("John Doe", 30),
("Jane Smith", 28)
};
var table = worksheet.Cell(1, 1).InsertTable(data);
Здесь мы создаем таблицу в Excel из списка кортежей, содержащих имя и возраст.
Сохранение Excel файла в разных форматах
При сохранении файла с помощью ClosedXML вы можете выбрать формат файла. Чтобы сохранить файл в формате .XLS, можно использовать стороннюю библиотеку, такую как NPOI, так как ClosedXML поддерживает только формат .XLSX.
workbook.SaveAs("HelloWorld.xlsx"); // Сохранение в формате .XLSX
// Для сохранения в .XLS необходимо использовать другую библиотеку
Заключение
Создание файлов Excel в C# без установки Microsoft Office – задача, с которой может справиться каждый разработчик, используя библиотеки, такие как ClosedXML, EPPlus или NPOI. В этой статье мы осветили ключевые аспекты создания, форматирования и сохранения документов Excel, что позволяет интегрировать эту функциональность в ваши приложения, не завися от сторонних программных продуктов.