Skip to content

slemvs/Excelerator

Repository files navigation

Excelerator

Set of classes for extremely simple generation plain Excel files

##Get started You can start working with Excelerator by creating a class which will be a row model for your Excel document. Let's define simple row model class.

public class Example1Model { public string Prop1 { get; set; } public string Prop2 { get; set; } }

Then you have to create your implementation of IExcelGenerator<Example1Model> by inherit it from ClosedXmlExcelGenerator<Example1Model>.

public class Example1Generator : ClosedXmlExcelGenerator<Example1Model> { }

Next step you define metadata for each column of your Excel document.

var wsMetadata = new WorksheetMetadata<Example1Model> { Name = "Example1", StartColumn = 5, StartRow = 3, FormatAsTable = true, ColumnsMetadata = new List<ColumnMetadata<Example1Model>> { new ColumnMetadata<Example1Model> {Header = "Prop1", Value = _ => _.Prop1}, new ColumnMetadata<Example1Model> {Header = "Prop2", Value = _ => _.Prop2} } };

That's all!

You only have to call Generate method of your object of type Example1Generator with metadata and collection of ExcelRowModel of your row model objects List<ExcelRowModel<Example1Model>> as parameters. As result you will get a memory stream. You can save it to file with .xlsx extension or attach it to e-mail.

var data = new List<ExcelRowModel<Example1Model>>() { new ExcelRowModel<Example1Model>() { Data = new Example1Model() { Prop1 = "prop1_1", Prop2 = "prop2_1" }}, new ExcelRowModel<Example1Model>() { Data = new Example1Model() { Prop1 = "prop1_2", Prop2 = "prop2_2" }}, new ExcelRowModel<Example1Model>() { Data = new Example1Model() { Prop1 = "prop1_3", Prop2 = "prop2_3" }} } var generator = new Example1Generator(); var ms = generator.Generate(wsMetadata, data)

Result file will be like this:

Prop1 Prop2
prop1_1 prop2_1
prop1_2 prop2_2
prop1_3 prop2_3

About

Set of classes for extremely simple generation plain Excel files and import data from them

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages