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.
105 lines
4.2 KiB
C#
105 lines
4.2 KiB
C#
using ClosedXML.Excel;
|
|
using System;
|
|
|
|
namespace ClosedXML_Examples
|
|
{
|
|
public class ShowCase : IXLExample
|
|
{
|
|
public void Create(String filePath)
|
|
{
|
|
// Creating a new workbook
|
|
var wb = new XLWorkbook();
|
|
|
|
//Adding a worksheet
|
|
var ws = wb.Worksheets.Add("Contacts");
|
|
|
|
//Adding text
|
|
//Title
|
|
ws.Cell("B2").Value = "Contacts";
|
|
//First Names
|
|
ws.Cell("B3").Value = "FName";
|
|
ws.Cell("B4").Value = "John";
|
|
ws.Cell("B5").Value = "Hank";
|
|
ws.Cell("B6").SetValue("Dagny"); // Another way to set the value
|
|
//Last Names
|
|
ws.Cell("C3").Value = "LName";
|
|
ws.Cell("C4").Value = "Galt";
|
|
ws.Cell("C5").Value = "Rearden";
|
|
ws.Cell("C6").SetValue("Taggart"); // Another way to set the value
|
|
|
|
//Adding more data types
|
|
//Is an outcast?
|
|
ws.Cell("D3").Value = "Outcast";
|
|
ws.Cell("D4").Value = true;
|
|
ws.Cell("D5").Value = false;
|
|
ws.Cell("D6").SetValue(false); // Another way to set the value
|
|
//Date of Birth
|
|
ws.Cell("E3").Value = "DOB";
|
|
ws.Cell("E4").Value = new DateTime(1919, 1, 21);
|
|
ws.Cell("E5").Value = new DateTime(1907, 3, 4);
|
|
ws.Cell("E6").SetValue(new DateTime(1921, 12, 15)); // Another way to set the value
|
|
//Income
|
|
ws.Cell("F3").Value = "Income";
|
|
ws.Cell("F4").Value = 2000;
|
|
ws.Cell("F5").Value = 40000;
|
|
ws.Cell("F6").SetValue(10000); // Another way to set the value
|
|
|
|
//Defining ranges
|
|
//From worksheet
|
|
var rngTable = ws.Range("B2:F6");
|
|
//From another range
|
|
var rngDates = rngTable.Range("E4:E6");
|
|
var rngNumbers = rngTable.Range("F4:F6");
|
|
|
|
//Formatting dates and numbers
|
|
//Using a OpenXML's predefined formats
|
|
rngDates.Style.NumberFormat.NumberFormatId = 15;
|
|
//Using a custom format
|
|
rngNumbers.Style.NumberFormat.Format = "$ #,##0";
|
|
|
|
//Format title cell in one shot
|
|
rngTable.Cell(1, 1).Style
|
|
.Font.SetBold()
|
|
.Fill.SetBackgroundColor(XLColor.CornflowerBlue)
|
|
.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center);
|
|
|
|
//Merge title cells
|
|
rngTable.FirstRow().Merge(); // We could've also used: rngTable.Range("A1:E1").Merge() or rngTable.Row(1).Merge()
|
|
|
|
//Formatting headers
|
|
var rngHeaders = rngTable.Range("B3:F3");
|
|
rngHeaders.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
|
|
rngHeaders.Style.Font.Bold = true;
|
|
rngHeaders.Style.Font.FontColor = XLColor.DarkBlue;
|
|
rngHeaders.Style.Fill.BackgroundColor = XLColor.Aqua;
|
|
|
|
// Create an Excel table with the data portion
|
|
var rngData = ws.Range("B3:F6");
|
|
var excelTable = rngData.CreateTable();
|
|
|
|
// Add the totals row
|
|
excelTable.ShowTotalsRow = true;
|
|
// Put the average on the field "Income"
|
|
// Notice how we're calling the cell by the column name
|
|
excelTable.Field("Income").TotalsRowFunction = XLTotalsRowFunction.Average;
|
|
// Put a label on the totals cell of the field "DOB"
|
|
excelTable.Field("DOB").TotalsRowLabel = "Average:";
|
|
|
|
//Add thick borders to the contents of our spreadsheet
|
|
ws.RangeUsed().Style.Border.OutsideBorder = XLBorderStyleValues.Thick;
|
|
|
|
// You can also specify the border for each side with:
|
|
// contents.FirstColumn().Style.Border.LeftBorder = XLBorderStyleValues.Thick;
|
|
// contents.LastColumn().Style.Border.RightBorder = XLBorderStyleValues.Thick;
|
|
// contents.FirstRow().Style.Border.TopBorder = XLBorderStyleValues.Thick;
|
|
// contents.LastRow().Style.Border.BottomBorder = XLBorderStyleValues.Thick;
|
|
|
|
// Adjust column widths to their content
|
|
ws.Columns(2, 6).AdjustToContents();
|
|
|
|
//Saving the workbook
|
|
wb.SaveAs(filePath);
|
|
}
|
|
}
|
|
}
|