feat(ExcelIO): add ColumnBuilder fluent API
This commit is contained in:
@@ -0,0 +1,52 @@
|
|||||||
|
namespace JdeScoping.ExcelIO.Mapping;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fluent builder for configuring Excel column properties.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">The model type being mapped.</typeparam>
|
||||||
|
/// <typeparam name="TProperty">The property type.</typeparam>
|
||||||
|
public sealed class ColumnBuilder<T, TProperty>
|
||||||
|
{
|
||||||
|
private readonly ColumnDefinition _definition;
|
||||||
|
|
||||||
|
internal ColumnBuilder(ColumnDefinition definition)
|
||||||
|
{
|
||||||
|
_definition = definition;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Sets the column display order.</summary>
|
||||||
|
public ColumnBuilder<T, TProperty> Order(int order)
|
||||||
|
{
|
||||||
|
_definition.Order = order;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Sets the column header text.</summary>
|
||||||
|
public ColumnBuilder<T, TProperty> Header(string text)
|
||||||
|
{
|
||||||
|
_definition.HeaderText = text;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Sets the Excel number format.</summary>
|
||||||
|
public ColumnBuilder<T, TProperty> Format(string format)
|
||||||
|
{
|
||||||
|
_definition.Format = format;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Sets a fixed column width (disables auto-width).</summary>
|
||||||
|
public ColumnBuilder<T, TProperty> Width(double width)
|
||||||
|
{
|
||||||
|
_definition.AutoWidth = false;
|
||||||
|
_definition.Width = width;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Enables text wrapping for the column.</summary>
|
||||||
|
public ColumnBuilder<T, TProperty> WrapText(bool wrap = true)
|
||||||
|
{
|
||||||
|
_definition.WrapText = wrap;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user