YGWordDocx 2.1.0

dotnet add package YGWordDocx --version 2.1.0
                    
NuGet\Install-Package YGWordDocx -Version 2.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="YGWordDocx" Version="2.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="YGWordDocx" Version="2.1.0" />
                    
Directory.Packages.props
<PackageReference Include="YGWordDocx" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add YGWordDocx --version 2.1.0
                    
#r "nuget: YGWordDocx, 2.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package YGWordDocx@2.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=YGWordDocx&version=2.1.0
                    
Install as a Cake Addin
#tool nuget:?package=YGWordDocx&version=2.1.0
                    
Install as a Cake Tool

README

What is this repository for?

This class libary uses DocumentFormat.OpenXml to read and populate Word template document with c# .net 8 and above. Populating Word Document with large amount of fields may not be a good idea. A better idea would be populating html and then convert to Word document

How do I get set up?

The Word document must contain begin and end marker for the fields to populate. For example, put these begin and end marker in the word document, and then put the DTO fields inside it

Sample Word Template Doc:

[Loop1]

Field Name here: [[EnvironmentValue]]

Field Name 2 here: [[Recommendation]]

[/Loop1]

C#:


List<YourDTO> listOfYourDTO = new List<YourDTO> ();

listOfYourDTO.Add(new YourDTO()
{
    EnvironmentValue = "Bears",
    Recommendation = "Preserve"
});

listOfYourDTO.Add(new YourDTO()
{
    EnvironmentValue = "Sheep",
    Recommendation = "Preserve"
});


YGWordDocx.YGWordDocx wd = new YGWordDocx.YGWordDocx(@"C:\Temp\TemplateFile.docx", @"C:\Temp\PopulatedFile.docx");
string outputFileName = wd.PopulateWordDoc<YourDTO>("[Loop1]", "[/Loop1]", listOfYourDTO);

// The fieldnames in this DTO must match with the fieldnames in double brackets in the word doc
public class YourDTO
{
    public string EnvironmentValue { get; set; } = "";
    public string Recommendation { get; set; } = "";

}

// Or,

YGWordDocx.YGWordDocx wd = new YGWordDocx.YGWordDocx(@"C:\Temp\TemplateFile.docx", @"C:\Temp\PopulatedFile.docx");
string outputFileName = wd.PopulateWordDoc<YourDTO>("[Loop1]", "[/Loop1]", YourDTO);

// A more reliable approach is, construct your html page and convert to Word document, just 2 lines of code:

string htmlcontents = File.ReadAllText(@"C:\Temp\EnvTemplate.html");
HtmlToWord h = new HtmlToWord();
h.ConvertHtmlToWord(htmlcontents, @"C:\Temp\EnvwordDoc.docx");


// For HTML that contains images: 

string rawHtml = /* your TinyMCE HTML */;
string imageRoot = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
string outputPath = Path.Combine(Directory.GetCurrentDirectory(), "output.docx");

// Step 1: Replace <img src="..."> with base64 data URIs
string processedHtml = EmbedImagesAsBase64(rawHtml, imageRoot);

// Step 2: Convert the updated HTML to Word
string result = ConvertHtmlToWord(processedHtml, outputPath);




Contribution guidelines

  • Writing tests
  • Code review
  • Other guidelines

Who do I talk to?

  • Repo owner or admin
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.1.0 157 5/19/2025
2.0.0 231 5/14/2025
1.3.0 162 4/24/2025
1.2.0 161 4/24/2025
1.1.0 159 4/21/2025
1.0.0 162 4/21/2025

Added functionality to convert image link to base64 to enable exporting image to word doc