A generic purchase order document with a header section and an expanding Word table for detail rows. |
public void GenerateDocument() { // Create an instance of WordTemplate WordTemplate wt = new WordTemplate(); // Open the template document string templatePath = @"..\..\WordTemplateFiles\PurchaseOrderTemplate.docx"; wt.Open(templatePath); // Query the database for header and detail information. // Set these DataTables as WordTemplate data sources. DataTable dtHeader = GetOrderHeaderData(@"..\..\WordData\PurchaseOrderDemoHeaderData.csv"); DataTable dtDetail = GetOrderDetailData(@"..\..\WordData\PurchaseOrderDemoDetailData.csv"); wt.SetDataSource(dtHeader); wt.SetRepeatBlock(dtDetail, "OrderDetailQuery"); wt.Process(); // Save the document to the disc wt.Save(@"..\..\WordOutputFiles\PurchaseOrder_output.docx"); } /// <summary>Retrieve a DataTable of order header data</summary> /// <param name="orderId">OrderID for which to retrieve data</param> /// <returns>DataTable of the requested order's data</returns> private DataTable GetOrderHeaderData(String csvFileName) { DataTable dt; using (GenericParserAdapter parser = new GenericParserAdapter(csvFileName)) { parser.ColumnDelimiter = ','; parser.FirstRowHasHeader = true; dt = parser.GetDataTable(); } return dt; } /// <summary>Retrieve a ReusltSet of order detail line items</summary> /// <param name="orderId">OrderID for which to retrieve data</param> /// <returns>DataTable of the requested order's line items</returns> private DataTable GetOrderDetailData(String csvFileName) { DataTable dt; using (GenericParserAdapter parser = new GenericParserAdapter(csvFileName)) { parser.ColumnDelimiter = ','; parser.FirstRowHasHeader = true; dt = parser.GetDataTable(); } return dt; } |
Template: PurchaseOrderTemplate.docx Output: PurchaseOrder_output.docx |