private static void Main(string[] args) { if (args.Length != 3) { PrintUsage(); Environment.Exit(0); } var templateDoc = new FileInfo(args[0]); if (!templateDoc.Exists) { Console.WriteLine("Error, {0} does not exist.", args[0]); PrintUsage(); Environment.Exit(0); } var dataFile = new FileInfo(args[1]); if (!dataFile.Exists) { Console.WriteLine("Error, {0} does not exist.", args[1]); PrintUsage(); Environment.Exit(0); } var assembledDoc = new FileInfo(args[2]); if (assembledDoc.Exists) { Console.WriteLine("Error, {0} exists.", args[2]); PrintUsage(); Environment.Exit(0); } var wmlDoc = new WmlDocument(templateDoc.FullName); XElement data = XElement.Load(dataFile.FullName); WmlDocument wmlAssembledDoc = DocumentAssembler.AssembleDocument(wmlDoc, data, out bool templateError); if (templateError) { Console.WriteLine("Errors in template."); Console.WriteLine("See {0} to determine the errors in the template.", assembledDoc.Name); } wmlAssembledDoc.SaveAs(assembledDoc.FullName); }
static void Main(string[] args) { var n = DateTime.Now; var tempDi = new DirectoryInfo(string.Format("ExampleOutput-{0:00}-{1:00}-{2:00}-{3:00}{4:00}{5:00}", n.Year - 2000, n.Month, n.Day, n.Hour, n.Minute, n.Second)); tempDi.Create(); FileInfo templateDoc = new FileInfo("../../TemplateDocument.docx"); FileInfo dataFile = new FileInfo("../../Data.xml"); WmlDocument wmlDoc = new WmlDocument(templateDoc.FullName); XElement data = XElement.Load(dataFile.FullName); bool templateError; WmlDocument wmlAssembledDoc = DocumentAssembler.AssembleDocument(wmlDoc, data, out templateError); if (templateError) { Console.WriteLine("Errors in template."); Console.WriteLine("See AssembledDoc.docx to determine the errors in the template."); } FileInfo assembledDoc = new FileInfo(Path.Combine(tempDi.FullName, "AssembledDoc.docx")); wmlAssembledDoc.SaveAs(assembledDoc.FullName); }
private static void Main() { DateTime n = DateTime.Now; var tempDi = new DirectoryInfo( $"ExampleOutput-{n.Year - 2000:00}-{n.Month:00}-{n.Day:00}-{n.Hour:00}{n.Minute:00}{n.Second:00}"); tempDi.Create(); var templateDoc = new FileInfo("../../../TemplateDocument.docx"); var dataFile = new FileInfo("../../../Data.xml"); var wmlDoc = new WmlDocument(templateDoc.FullName); XElement data = XElement.Load(dataFile.FullName); WmlDocument wmlAssembledDoc = DocumentAssembler.AssembleDocument(wmlDoc, data, out bool templateError); if (templateError) { Console.WriteLine("Errors in template."); Console.WriteLine("See AssembledDoc.docx to determine the errors in the template."); } var assembledDoc = new FileInfo(Path.Combine(tempDi.FullName, "AssembledDoc.docx")); wmlAssembledDoc.SaveAs(assembledDoc.FullName); }
static void Main(string[] args) { var n = DateTime.Now; var tempDi = new DirectoryInfo(string.Format("ExampleOutput-{0:00}-{1:00}-{2:00}-{3:00}{4:00}{5:00}", n.Year - 2000, n.Month, n.Day, n.Hour, n.Minute, n.Second)); tempDi.Create(); FileInfo templateDoc = new FileInfo("../../TemplateDocument.docx"); FileInfo dataFile = new FileInfo(Path.Combine(tempDi.FullName, "Data.xml")); // The following method generates a large data file with random data. // In a real world scenario, this is where you would query your data source and produce XML that will drive your document generation process. XElement data = GenerateDataFromDataSource(dataFile); WmlDocument wmlDoc = new WmlDocument(templateDoc.FullName); int count = 1; foreach (var customer in data.Elements("Customer")) { FileInfo assembledDoc = new FileInfo(Path.Combine(tempDi.FullName, string.Format("Letter-{0:0000}.docx", count++))); Console.WriteLine(assembledDoc.Name); bool templateError; WmlDocument wmlAssembledDoc = DocumentAssembler.AssembleDocument(wmlDoc, customer, out templateError); if (templateError) { Console.WriteLine("Errors in template."); Console.WriteLine("See {0} to determine the errors in the template.", assembledDoc.Name); } wmlAssembledDoc.SaveAs(assembledDoc.FullName); } }
static void Main(string[] args) { FileInfo templateDoc = new FileInfo("../../TemplateDocument.docx"); FileInfo dataFile = new FileInfo("../../Data.xml"); WmlDocument wmlDoc = new WmlDocument(templateDoc.FullName); XElement data = XElement.Load(dataFile.FullName); bool templateError; WmlDocument wmlAssembledDoc = DocumentAssembler.AssembleDocument(wmlDoc, data, out templateError); if (templateError) { Console.WriteLine("Errors in template."); Console.WriteLine("See AssembledDoc.docx to determine the errors in the template."); } FileInfo assembledDoc = new FileInfo("../../AssembledDoc.docx"); wmlAssembledDoc.SaveAs(assembledDoc.FullName); }
private static void Main() { DateTime n = DateTime.Now; var tempDi = new DirectoryInfo( $"ExampleOutput-{n.Year - 2000:00}-{n.Month:00}-{n.Day:00}-{n.Hour:00}{n.Minute:00}{n.Second:00}"); tempDi.Create(); var templateDoc = new FileInfo("../../../TemplateDocument.docx"); var dataFile = new FileInfo(Path.Combine(tempDi.FullName, "Data.xml")); // The following method generates a large data file with random data. // In a real world scenario, this is where you would query your data source and produce XML that will drive your document generation process. const int numberOfDocumentsToGenerate = 100; XElement data = GenerateDataFromDataSource(dataFile, numberOfDocumentsToGenerate); var wmlDoc = new WmlDocument(templateDoc.FullName); var count = 1; foreach (XElement customer in data.Elements("Customer")) { var assembledDoc = new FileInfo(Path.Combine(tempDi.FullName, $"Letter-{count++:0000}.docx")); Console.WriteLine("Generating {0}", assembledDoc.Name); WmlDocument wmlAssembledDoc = DocumentAssembler.AssembleDocument(wmlDoc, customer, out bool templateError); if (templateError) { Console.WriteLine("Errors in template."); Console.WriteLine("See {0} to determine the errors in the template.", assembledDoc.Name); } wmlAssembledDoc.SaveAs(assembledDoc.FullName); Console.WriteLine("Converting to HTML {0}", assembledDoc.Name); FileInfo htmlFileName = ConvertToHtml(assembledDoc.FullName, tempDi.FullName); Console.WriteLine("Converting back to DOCX {0}", htmlFileName.Name); ConvertToDocx(htmlFileName.FullName, tempDi.FullName); } }