MailMerge replaces simple and complex merge fields in WordProcessingML .docx files and helps you apply .Net's Xml & XPath tooling to Word documents. Component Usage For Streams or Files: ``` var (outputStream, errors) = new MailMerger().Merge(inputStream, Dictionary); var (ok,errors) = new MailMerger().Merge(inputFileName, Dictionary, outputFileName); ``` Extension Methods & Helpers for working with OoXml ``` stream.AsWordprocessingDocument(isEditable) stream.AsXPathDocOfWordprocessingMainDocument(isEditable) stream.AsXElementOfWordprocessingMainDocument(isEditable) stream.GetXmlDocumentOfWordprocessingMainDocument() fileInfo.GetXElementOfWordprocessingMainDocument() fileInfo.GetXmlDocumentOfWordprocessingMainDocument() ``` A NamespaceManager, NameTable & Uri which you need when creating an XmlDocument and/or XElements: ``` var xdoc = new XmlDocument(OoXmlNamespaces.Manager.NameTable) var xelement= mainDocumentPart.CreateElement("w", "t", OoXmlNamespaces.WpML2006MainUri) ``` CommandLine Usage: Perform a merge, or show a document's Xml ``` dotnet MailMerge.dll inputFile1 outputFile1 [inputFileN [...outputFileN]] [ key=value [...] ] dotnet MailMerge.dll --showxml file [fileN ...] ```
$ dotnet add package MailMergeMailMerge replaces simple and complex merge fields in WordProcessingML .docx files and helps you apply .Net's Xml & XPath tooling to Word documents.
var (outputStream, errors) = new MailMerger().Merge(inputStream, Dictionary);
var (ok,errors) = new MailMerger().Merge(inputFileName, Dictionary, outputFileName);
Set the current DateTime for date merge fields on MailMerger.DateTime, e.g. new MailMerger{DateTime=...}
Merge a docx file:
dotnet MailMerge.dll inputFile1 outputFile1 [inputFileN [...outputFileN]] [ key=value [...] ]
dotnet MailMerge.dll MyTemplate.docx MyLetterToBill.docx FirstName=Bill "LastName=O Reilly"
Show a document's Xml:
dotnet MailMerge.dll --showxml file [fileN ...]
stream.AsWordprocessingDocument(isEditable)
stream.AsXPathDocOfWordprocessingMainDocument(isEditable)
stream.AsXElementOfWordprocessingMainDocument(isEditable)
stream.GetXmlDocumentOfWordprocessingMainDocument()
fileInfo.GetXElementOfWordprocessingMainDocument()
fileInfo.GetXmlDocumentOfWordprocessingMainDocument()
A NamespaceManager, NameTable & Uri which you need when creating an XmlDocument and/or XElements:
var xdoc = new XmlDocument(OoXmlNamespace.Manager.NameTable)
var xelement= mainDocumentPart.CreateElement("w", "t", OoXmlNamespace.WpML2006MainUri)
None really, but see https://github.com/chrisfcarroll/MailMerge/blob/master/MailMerge/appsettings.json for settable limits. For commandline --showxml usage in scripts, you'll want to set appsettings.json::Logging.LogLevel to Information or higher