YGWordDocx 2.1.0
dotnet add package YGWordDocx --version 2.1.0
NuGet\Install-Package YGWordDocx -Version 2.1.0
<PackageReference Include="YGWordDocx" Version="2.1.0" />
<PackageVersion Include="YGWordDocx" Version="2.1.0" />
<PackageReference Include="YGWordDocx" />
paket add YGWordDocx --version 2.1.0
#r "nuget: YGWordDocx, 2.1.0"
#:package YGWordDocx@2.1.0
#addin nuget:?package=YGWordDocx&version=2.1.0
#tool nuget:?package=YGWordDocx&version=2.1.0
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 | Versions 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. |
-
net8.0
- DocumentFormat.OpenXml (>= 3.3.0)
- HtmlToOpenXml.dll (>= 3.2.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added functionality to convert image link to base64 to enable exporting image to word doc