Use the new features of the WordTemplate object to create feature-rich reports that were previously only possible with many lines of code. This sample uses nested repeat blocks to produce a report very much like the Word Application Product Catalog. |
This sample uses nested repeat blocks to produce a report very much like the Word Application Product Catalog sample, but with many fewer lines of code. Instead of using many database queries and manually constructing each piece of the report, this sample uses two queries and binds them to a template that builds the entire report.
Note that using nested repeat blocks is only supported by using docx files.
public void GenerateDocument() { WordTemplate wt = new WordTemplate(); wt.Open(@"..\..\WordTemplateFiles\NestedCatalogTemplate.docx"); DataTable dt = new DataTable(); dt = GetCatalogData(@"..\..\WordData\NestedProductCatalogData.csv"); dt.Columns.Add("LargePhoto", typeof(byte[])); //Retrieves each picture in the NestedProductCatalogImages folder //and get a byte[] for each one using the GetCatalogPictures Helper method. //Then add this byte[] to the LargePhoto column in dt. for (int k = 0; k < dt.Rows.Count; k++) { string imageName = dt.Rows[k].ItemArray[6].ToString(); DataRow dr = dt.Rows[k]; dr[7] = GetCatalogPictures(imageName); } wt.SetDataSource(DateTime.Now, "HeaderData"); //Sets the data source for the index of the catalog with bookmark string "Index" wt.SetRepeatBlock(GetCatalogData(@"..\..\WordData\NestedProductCatalogIndexData.csv"), "Index"); //Sets the data source for the body of the catalog with bookmark string "Catalog" wt.SetRepeatBlock(dt, "Catalog"); wt.Process(); //Save the product catalog in the desired location on the disc wt.Save(@"..\..\WordOutputFiles\NestedProductCatalog_output.docx"); } |
Template: NestedCatalogTemplate.docx Output: NestedProductCatalog_output.docx |