Initial commit of the ClosedXML library

Establishes the foundational structure, core Excel functionality, and tooling.

- Implements base components for cells, ranges, columns, and rows.
- Integrates a custom calculation engine with a wide range of Excel functions.
- Adds comprehensive support for styling, conditional formatting, data validation, comments, pictures, and charts.
- Configures build setup, project metadata (NuGet), and developer guidelines.
- Includes editor and Git attributes for consistent code style and line endings.
This commit is contained in:
Thom Lamb
2026-06-23 11:02:53 -05:00
parent 28bc05cf54
commit 2cd6df6481
1092 changed files with 97270 additions and 408 deletions
+83
View File
@@ -0,0 +1,83 @@
using System;
using System.Linq;
using ClosedXML.Excel;
namespace ClosedXML_Examples.Rows
{
public class InsertRows : IXLExample
{
#region Variables
// Public
// Private
#endregion
#region Properties
// Public
// Private
// Override
#endregion
#region Events
// Public
// Private
// Override
#endregion
#region Methods
// Public
public void Create(String filePath)
{
var workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("Inserting Rows");
// Color the entire spreadsheet using rows
ws.Rows().Style.Fill.BackgroundColor = XLColor.LightCyan;
// Put a value in a few cells
foreach (var r in Enumerable.Range(1, 5))
foreach (var c in Enumerable.Range(1, 5))
ws.Cell(r, c).Value = "X";
var blueRow = ws.Row(2);
var redRow = ws.Row(5);
blueRow.Style.Fill.BackgroundColor = XLColor.Blue;
blueRow.InsertRowsBelow(2);
redRow.Style.Fill.BackgroundColor = XLColor.Red;
redRow.InsertRowsAbove(2);
ws.Columns(3, 4).Style.Fill.BackgroundColor = XLColor.Orange;
ws.Range("A2:A4").InsertRowsBelow(2);
ws.Range("B2:B4").InsertRowsAbove(2);
ws.Range("C2:C4").InsertRowsBelow(2);
ws.Range("D2:D4").InsertRowsAbove(2);
workbook.SaveAs(filePath);
}
// Private
// Override
#endregion
}
}
+73
View File
@@ -0,0 +1,73 @@
using System;
using ClosedXML.Excel;
namespace ClosedXML_Examples
{
public class RowCells : IXLExample
{
#region Variables
// Public
// Private
#endregion
#region Properties
// Public
// Private
// Override
#endregion
#region Events
// Public
// Private
// Override
#endregion
#region Methods
// Public
public void Create(String filePath)
{
var workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("Row Cells");
var rowFromWorksheet = ws.Row(1);
rowFromWorksheet.Cell(1).Style.Fill.BackgroundColor = XLColor.Red;
rowFromWorksheet.Cells("2").Style.Fill.BackgroundColor = XLColor.Blue;
rowFromWorksheet.Cells("3,5:6").Style.Fill.BackgroundColor = XLColor.Red;
rowFromWorksheet.Cells(8, 9).Style.Fill.BackgroundColor = XLColor.Blue;
var rowFromRange = ws.Range("A2:I2").FirstRow();
rowFromRange.Cell(1).Style.Fill.BackgroundColor = XLColor.Red;
rowFromRange.Cells("2").Style.Fill.BackgroundColor = XLColor.Blue;
rowFromRange.Cells("3,5:6").Style.Fill.BackgroundColor = XLColor.Red;
rowFromRange.Cells(8, 9).Style.Fill.BackgroundColor = XLColor.Blue;
ws.Columns().Width = 7;
workbook.SaveAs(filePath);
}
// Private
// Override
#endregion
}
}
+96
View File
@@ -0,0 +1,96 @@
using System;
using ClosedXML.Excel;
namespace ClosedXML_Examples.Rows
{
public class RowCollection : IXLExample
{
#region Variables
// Public
// Private
#endregion
#region Properties
// Public
// Private
// Override
#endregion
#region Events
// Public
// Private
// Override
#endregion
#region Methods
// Public
public void Create(String filePath)
{
var workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("Rows of a Range");
// All rows in a range
ws.Range("A1:B2").Rows().Style.Fill.BackgroundColor = XLColor.DimGray;
var bigRange = ws.Range("B4:C17");
// Contiguous rows by number
bigRange.Rows(1, 2).Style.Fill.BackgroundColor = XLColor.Red;
// Contiguous rows by number
bigRange.Rows("4:5").Style.Fill.BackgroundColor = XLColor.Blue;
// Spread rows by number
bigRange.Rows("7:8,10:11").Style.Fill.BackgroundColor = XLColor.Orange;
// Using a single number
bigRange.Rows("13").Style.Fill.BackgroundColor = XLColor.Cyan;
// Adjust the height
ws.Rows().Height = 15;
var ws2 = workbook.Worksheets.Add("Rows of a Worksheet");
// Contiguous rows by number
ws2.Rows(1, 2).Style.Fill.BackgroundColor = XLColor.Red;
// Contiguous rows by number
ws2.Rows("4:5").Style.Fill.BackgroundColor = XLColor.Blue;
// Spread rows by number
ws2.Rows("7:8,10:11").Style.Fill.BackgroundColor = XLColor.Orange;
// Using a single number
ws2.Rows("13").Style.Fill.BackgroundColor = XLColor.Cyan;
// Adjust the height
ws2.Rows("1:13").Height = 15;
workbook.SaveAs(filePath);
}
// Private
// Override
#endregion
}
}
+80
View File
@@ -0,0 +1,80 @@
using System;
using ClosedXML.Excel;
namespace ClosedXML_Examples.Rows
{
public class RowSettings : IXLExample
{
#region Variables
// Public
// Private
#endregion
#region Properties
// Public
// Private
// Override
#endregion
#region Constructors
// Public
public RowSettings()
{
}
// Private
#endregion
#region Events
// Public
// Private
// Override
#endregion
#region Methods
// Public
public void Create(String filePath)
{
var workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("Row Settings");
var row1 = ws.Row(2);
row1.Style.Fill.BackgroundColor = XLColor.Red;
row1.Height = 30;
var row2 = ws.Row(4);
row2.Style.Fill.BackgroundColor = XLColor.DarkOrange;
row2.Height = 3;
workbook.SaveAs(filePath);
}
// Private
// Override
#endregion
}
}