Библиотека .NET с открытым исходным кодом для работы с электронными таблицами Excel
ClosedXML позволяет читать, обрабатывать и писать документы Microsoft Excel.
ClosedXML — это API C# с открытым исходным кодом для чтения, обработки и записи документов Microsoft Excel 2007+ (.xlsx, .xlsm). API позволяет создавать файлы Excel без использования приложения Excel и читать файлы с помощью расширенных функций.
Используя API, вы можете стилизовать свои книги, используя цвет фона и границы ячеек. Вы можете добавлять, удалять и перемещать рабочие листы и управлять типами данных внутри Excel.
Начало работы с ClosedXML
Рекомендуемый способ установки ClosedXML - от NuGet, пожалуйста, используйте следующую команду для более быстрой установки.
Установите ClosedXML из NuGet
Install-Package ClosedXML
Создавайте новые рабочие книги бесплатно с помощью C#
CLosedXML позволяет разработчикам C# .NET создавать новые рабочие таблицы excel. Вы можете создать пустую кулинарную книгу с помощью метода XLWorkbook(). Библиотека включает в себя несколько важных функций для управления вашими рабочими листами. Он позволяет добавлять таблицы в вашу кулинарную книгу, добавлять клетки и столбцы, применять стили к строкам и столбцам, удалять нежелательные клетки и многое другое.
Создать новые книги через .NET API
using (var workbook = new XLWorkbook())
{
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
workbook.SaveAs("HelloWorld.xlsx");
}
Стилизовать таблицы Excel с помощью C#
API ClosedXML с открытым исходным кодом позволяет разработчикам программного обеспечения применять стили к своим таблицам Excel с помощью всего пары строк кода C#. API обогащен функциями стилизации, включая выравнивание, границу, заливку, шрифт, числовой формат, стилизацию строк, столбцов и многое другое. Библиотека также позволяет пользователям изменять стиль в соответствии со своими потребностями.
Как применять стили к листам Excel через C# Библиотеку
var path = Program.BaseCreatedDirectory;
new StyleFont().Create(Path.Combine(path, "styleFont.xlsx"));
new StyleFill().Create(Path.Combine(path, "styleFill.xlsx"));
new StyleBorder().Create(Path.Combine(path, "styleBorder.xlsx"));
new StyleAlignment().Create(Path.Combine(path, "styleAlignment.xlsx"));
new StyleNumberFormat().Create(Path.Combine(path, "styleNumberFormat.xlsx"));
new StyleIncludeQuotePrefix().Create(Path.Combine(path, "styleIncludeQuotePrefix.xlsx"));
Использование автофильтров в Excel с помощью C#
Библиотека ClosedXML включает в себя полную поддержку применения фильтров в рабочих таблицах excel. Библиотека включает в себя различные типы фильтров для удобства пользователя. Вы можете применить фильтр к определенному диапазону, применить фильтр к значениям и создать собственные пользовательские фильтры.
Как применять автоматические фильтры в Excel через C#
public class DynamicAutoFilter : IXLExample
{
public void Create(string filePath)
{
var wb = new XLWorkbook();
IXLWorksheet ws;
#region Single Column Numbers
String singleColumnNumbers = "Single Column Numbers";
ws = wb.Worksheets.Add(singleColumnNumbers);
// Add a bunch of numbers to filter
ws.Cell("A1").SetValue("Numbers")
.CellBelow().SetValue(2)
.CellBelow().SetValue(3)
.CellBelow().SetValue(3)
.CellBelow().SetValue(5)
.CellBelow().SetValue(1)
.CellBelow().SetValue(4);
// Add filters
ws.RangeUsed().SetAutoFilter().Column(1).AboveAverage();
// Sort the filtered list
//ws.AutoFilter.Sort(1);
#endregion
#region Multi Column
String multiColumn = "Multi Column";
ws = wb.Worksheets.Add(multiColumn);
ws.Cell("A1").SetValue("First")
.CellBelow().SetValue("B")
.CellBelow().SetValue("C")
.CellBelow().SetValue("C")
.CellBelow().SetValue("E")
.CellBelow().SetValue("A")
.CellBelow().SetValue("D");
ws.Cell("B1").SetValue("Numbers")
.CellBelow().SetValue(2)
.CellBelow().SetValue(3)
.CellBelow().SetValue(3)
.CellBelow().SetValue(5)
.CellBelow().SetValue(1)
.CellBelow().SetValue(4);
ws.Cell("C1").SetValue("Strings")
.CellBelow().SetValue("B")
.CellBelow().SetValue("C")
.CellBelow().SetValue("C")
.CellBelow().SetValue("E")
.CellBelow().SetValue("A")
.CellBelow().SetValue("D");
// Add filters
ws.RangeUsed().SetAutoFilter().Column(2).BelowAverage();
// Sort the filtered list
//ws.AutoFilter.Sort(3);
#endregion
using (var ms = new MemoryStream())
{
wb.SaveAs(ms);
var workbook = new XLWorkbook(ms);
#region Single Column Numbers
//workbook.Worksheet(singleColumnNumbers).AutoFilter.Sort(1, XLSortOrder.Descending);
#endregion
#region Multi Column
//workbook.Worksheet(multiColumn).AutoFilter.Sort(3, XLSortOrder.Descending);
#endregion
workbook.SaveAs(filePath);
ms.Close();
}
}
}