ClosedXML — это сторонняя библиотека .NET для чтения, управления и записи файлов Excel 2007+ (.xlsx, .xlsm). Он основан на OpenXML, но по сравнению с OpenXML ClosedXML имеет более высокую производительность и более простой в использовании интерфейс API.
ClosedXML поддерживает анализ и генерацию документов XML и может обрабатывать сложные структуры XML. В то же время он также предоставляет богатый API, который позволяет легко запрашивать, изменять, добавлять и удалять XML-документы. Кроме того, ClosedXML также поддерживает запросы XPath и XSLT для эффективного поиска и преобразования XML-данных.
При использовании ClosedXML вам необходимо добавить ClosedXML.dll в свой проект и использовать соответствующий API для чтения и записи файлов Excel. ClosedXML поддерживает различные типы данных, включая строки, числа, даты, логические значения и т. д., а также поддерживает форматирование ячеек. Кроме того, вы также можете использовать ClosedXML для настроек стиля, включая шрифты, границы, цвета и т. д.
Помимо основных операций с файлами Excel, ClosedXML также поддерживает расширенные функции, такие как диаграммы, формулы, проверка данных и условное форматирование. В то же время ClosedXML также предоставляет различные механизмы обработки исключений, которые помогут вам лучше обрабатывать исключения.
Официальный сайт:
https://docs.closedxml.io/en/latest/
https://github.com/ClosedXML/ClosedXML
Инструменты → Диспетчер пакетов Nuget → Консоль диспетчера пакетов
Введите следующую команду:
Install-Package ClosedXML
/// <summary>
/// Инсердататабле
/// </summary>
private static void InsertDataTable()
{
// создать новый DataTable объект
DataTable dataTable = new DataTable();
// Определить столбцы таблицы
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
// Добавить строку данных
dataTable.Rows.Add(1, "John", 25);
dataTable.Rows.Add(2, "Alice", 30);
dataTable.Rows.Add(3, "Bob", 40);
using (var workbook = new XLWorkbook())
{
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.FirstCell().InsertTable(dataTable);
workbook.SaveAs("D:\\tableDemo.xlsx");
}
}
/// <summary>
/// вставить список
/// </summary>
private static void InsertList()
{
List<UserInfo> list = new List<UserInfo>();
list.Add(new UserInfo
{
name = «Сяо Мин»,
age = 30,
address = «Пекин»
});
list.Add(new UserInfo
{
name = «Сяо Ли»,
age = 20,
address = «Чжэнчжоу»
});
list.Add(new UserInfo
{
name = «Сяоцян»,
age = 26,
address = "Шанхай"
});
using (var workbook = new XLWorkbook())
{
var worksheet = workbook.Worksheets.Add("Sheet1");
// Установить заголовок столбца
worksheet.Cell("A1").Value = "Имя";
worksheet.Cell("A1").Style.Font.Bold = true;
worksheet.Cell("A1").Style.Fill.SetBackgroundColor(XLColor.Gray);
worksheet.Cell("B1").Value = "возраст";
worksheet.Cell("B1").Style.Font.Bold = true;
worksheet.Cell("B1").Style.Fill.SetBackgroundColor(XLColor.Gray);
worksheet.Cell("C1").Value = "адрес";
worksheet.Cell("C1").Style.Font.Bold = true;
worksheet.Cell("C1").Style.Fill.SetBackgroundColor(XLColor.Gray);
var table = worksheet.Cell("A2").InsertData(list);
workbook.SaveAs("D:\\listDemo.xlsx");
}
}
/// <summary>
/// Вставить изображение
/// </summary>
private static void InsertImage()
{
using (var workbook = new XLWorkbook())
{
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.AddPicture("D:\\1.png") .MoveTo(worksheet.Cell(1, 1));
workbook.SaveAs("D:\\imageDemo.xlsx");
}
}
/// <summary>
/// большая партиявставить список 200 000 записей за 5,9 секунды
/// </summary>
private static void BatchInsertList()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
List<UserInfo> list = new List<UserInfo>();
for (int i = 0; i < 200000; i++)
{
list.Add(new UserInfo
{
name = «Сяо Мин»+я,
age = 30,
address = «Пекин»
});
}
using (var workbook = new XLWorkbook())
{
var worksheet = workbook.Worksheets.Add("Sheet1");
// Установить заголовок столбца
worksheet.Cell("A1").Value = "Имя";
worksheet.Cell("A1").Style.Font.Bold = true;
worksheet.Cell("A1").Style.Fill.SetBackgroundColor(XLColor.Gray);
worksheet.Cell("B1").Value = "возраст";
worksheet.Cell("B1").Style.Font.Bold = true;
worksheet.Cell("B1").Style.Fill.SetBackgroundColor(XLColor.Gray);
worksheet.Cell("C1").Value = "адрес";
worksheet.Cell("C1").Style.Font.Bold = true;
worksheet.Cell("C1").Style.Fill.SetBackgroundColor(XLColor.Gray);
var table = worksheet.Cell("A2").InsertData(list);
workbook.SaveAs("D:\\batchListDemo.xlsx");
}
stopwatch.Stop();
// Получить время выполнения кода
TimeSpan elapsedTime = stopwatch.Elapsed;
// Время выполнения вывода
Console.WriteLine("Время выполнения экспорта данных 100 000: {0}", elapsedTime.TotalSeconds+" Второй");
Console.ReadKey();
}
Короче говоря, ClosedXML — это мощная, простая в использовании и высокопроизводительная библиотека .NET Excel, подходящая для разработки различных приложений Excel.