Gufel.ExcelBuilder
2.0.0
See the version list below for details.
dotnet add package Gufel.ExcelBuilder --version 2.0.0
NuGet\Install-Package Gufel.ExcelBuilder -Version 2.0.0
<PackageReference Include="Gufel.ExcelBuilder" Version="2.0.0" />
<PackageVersion Include="Gufel.ExcelBuilder" Version="2.0.0" />
<PackageReference Include="Gufel.ExcelBuilder" />
paket add Gufel.ExcelBuilder --version 2.0.0
#r "nuget: Gufel.ExcelBuilder, 2.0.0"
#:package Gufel.ExcelBuilder@2.0.0
#addin nuget:?package=Gufel.ExcelBuilder&version=2.0.0
#tool nuget:?package=Gufel.ExcelBuilder&version=2.0.0
Gufel.ExcelBuilder
A powerful and flexible Excel file builder library for .NET applications that makes it easy to create and customize Excel files programmatically.
Features
- Create Excel files with multiple worksheets
- Custom column formatting and styling
- Support for Persian date formatting
- Customizable cell styles and headers
- Right-to-Left (RTL) support
- Auto-fit columns
- Row numbering
- Custom value providers
- Custom column providers
- Event-based customization
- Support for dynamic data
- Memory-efficient processing
- Thread-safe operations
- Support sql data reader
Installation
dotnet add package Gufel.ExcelBuilder
Usage
Basic Example
using Gufel.ExcelBuilder;
// Create a list of data
var data = new List<Person>
{
new Person { Name = "John", Age = 30, BirthDate = new DateTime(1993, 1, 1) },
new Person { Name = "Jane", Age = 25, BirthDate = new DateTime(1998, 5, 15) }
};
// Create and configure the Excel builder
using var builder = new ExcelBuilder();
builder.AddSheet("People", data);
// Get the Excel file as byte array
byte[] excelFile = builder.BuildFile();
Advanced Example with Custom Styling
using Gufel.ExcelBuilder;
// Create custom settings
var settings = new ExcelBuilderSettings
{
UseDefaultStyle = true,
HasRowNumber = true,
RowNumberColumnName = "Row",
AutoFitColumns = true,
IsRtl = true
};
// Create and configure the Excel builder
using var builder = new ExcelBuilder();
builder.SetSettings(settings);
// Create custom styles
var headerStyle = builder.CreateStyle("CustomHeader");
headerStyle.Object.Style.Fill.PatternType = ExcelFillStyle.Solid;
headerStyle.Object.Style.Fill.BackgroundColor.SetColor(Color.LightBlue);
headerStyle.Object.Style.Font.Bold = true;
var cellStyle = builder.CreateStyle("CustomCell");
cellStyle.Object.Style.Font.Name = "Arial";
cellStyle.Object.Style.Font.Size = 10;
// Add data with custom column rendering
builder.OnRenderColumn += (column, value, excelColumn, rowData) =>
{
if (column == "Age" && value is int age)
{
excelColumn.Value = $"{age} years";
return true;
}
return false;
};
builder.AddSheet("People", data);
byte[] excelFile = builder.BuildFile();
Model with Excel Column Attributes
public class Person
{
[ExcelColumn(Name = "Full Name")]
public string Name { get; set; }
[ExcelColumn(Name = "Age", ColumnFormat = "#,##0")]
public int Age { get; set; }
[ExcelColumn(Name = "Birth Date", AsPersianDate = true, PersianDateFormat = "$yyyy/$MM/$dd")]
public DateTime BirthDate { get; set; }
}
Customization
Custom Value Provider
public class CustomValueProvider : IValueProvider
{
public Dictionary<string, object?> GetValues(List<ExcelColumnAttribute> columns, object data)
{
// Implement custom value extraction logic
}
}
// Usage
builder.SetValueProvider(new CustomValueProvider());
Custom Column Provider
public class CustomColumnProvider : IColumnProvider
{
public List<ExcelColumnAttribute> GetColumns(Type dataType, object? data)
{
// Implement custom column extraction logic
}
}
// Usage
builder.SetColumnProvider(new CustomColumnProvider());
Advanced Features
Event Handlers
The library provides several event handlers for customizing the Excel generation process:
OnCreateWorksheet
: Called when a new worksheet is createdOnCreateColumn
: Called when a new column is createdOnRenderColumn
: Called when a column value is being rendered
Persian Date Support
The library includes built-in support for Persian dates with customizable formatting:
[ExcelColumn(Name = "Birth Date", AsPersianDate = true, PersianDateFormat = "$yyyy/$MM/$dd")]
public DateTime BirthDate { get; set; }
RTL Support
Enable Right-to-Left support for worksheets:
var settings = new ExcelBuilderSettings
{
IsRtl = true
};
Memory Management
The library uses IDisposable
pattern for proper resource management:
using var builder = new ExcelBuilder();
// ... use the builder
// Resources will be automatically disposed
Sql data reader
Add sheet with sqlreader, support custom column name and order
using var builder = new ExcelBuilder();
var sqlConnection = new SqlConnection("sql_connection_string");
var sqlCommand = new SqlCommand("Select * from Report", sqlConnection);
sqlConnection.Open();
var reader = sqlCommand.ExecuteReader();
//this will read custom column name and order
var ctx = new List<ExcelColumnAttribute>();
var provider = new ManualColumnProvider(ctx);
excelBuilder.SetColumnProvider(provider);
var fileByte = excelBuilder.AddSheet("SqlData", reader).BuildFile();
reader.Close();
sqlCommand.Dispose();
sqlConnection.Close();
sqlConnection.Dispose();
License
Please note library use epplus so please set license before using.
ExcelPackage.License.SetNonCommercialPersonal("Personal");
This project is licensed under the terms specified in the LICENSE.txt file.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- EPPlus (>= 8.0.5)
- Gufel.Date (>= 1.0.0)
- Gufel.ExcelBuilder.Model (>= 2.0.0)
- Microsoft.Data.SqlClient (>= 6.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Add sql reader to excel builder