egonl / SharpDocx

Lightweight template engine for creating Word documents
MIT License
333 stars 76 forks source link
docx microsoft-word mvc open-xml-sdk word

SharpDocx

NuGet MIT AppVeyor

Lightweight template engine for creating Word documents

Generating documents with SharpDocx is a two step process. First you create a view in Word. A view is a Word document which also contains C# code. Code can be inserted anywhere, e.g. <%= DateTime.Now %> would insert the current date and time.

The next step is to create documents based on this view. This requires two lines of code:

var document = DocumentFactory.Create("view.cs.docx");
document.Generate("output.docx");

Out of the box SharpDocx supports inserting text, tables, images and more. See the Tutorial sample (here's the view and the controller, and here's the generated document).

If you want, you can specify a view model to be used in your view. Then you could write things like <% foreach (var item in Model.MyList) { %>.

var document = DocumentFactory.Create("view.cs.docx", myModel);
document.Generate("output.docx", myModel);

See also the Model sample.

If you want to do something that's not supported by SharpDocx, you can do so by creating your own document subclass. See the Inheritance example.

SharpDocx supports .NET Framework 3.5-4.8 and .NET Standard 2.0. Since it supports .NET Standard 2.0 it can be used in .NET Core 3.1, .NET 5.0 and .NET 6.0 projects as well.