Intro
Excerpt |
---|
This demo illustrates some of the formulas available for WordTemplate in OfficeWriter 4.1 and above. |
While Microsoft Word provides a limited number of formulas, they are restrictive. Specifically, Word formulas must be contained in a table, and must take either ABOVE, LEFT, or a list of values.
...
- AVERAGE
- COUNT
- COUNTA
- MAX
- MIN
- PRODUCT
- STDEV
- STDEVP
- SUM
- VAR
- VARP
Code
Code Block |
---|
public void GenerateDocument() { WordTemplate wt = new WordTemplate(); // Create the array of mergefield names string[] fields = new string[] { "TestDate", "School", "Town", "Version" }; // Create the array of values, each of which corresponds to a mergefield above object[] values = new object[] { new DateTime(2009, 11, 16).ToShortDateString(),"Samuel Adams HS", "Milbury", wt.Version}; // Open the template document wt.Open(@"..\..\WordTemplateFiles\TestScoreReportTemplate.docx"); // Set the main document data source wt.SetDataSource(values, fields, ""); // Retrieve test score data DataTable dt = GetScores(); // In a repeat block, a new entry is inserted for each row in the // data source. When the data source is a DataTable, the mergefield // names are the same as the column names; so there is no need to // specify mergefield names as we did above. However, we do have to set //a bookmark, "Items", so that wordwriter knows where to repeatedly bind the data. wt.SetRepeatBlock(dt, "Items"); // Populate the template wt.Process(); // Save the document to the disc in the desired location wt.Save(@"..\..\WordOutputFiles\ScoreReport_output.docx"); } private DataTable GetScores() { DataTable dt = new DataTable(); dt.Columns.Add("StudentID", typeof(string)); dt.Columns.Add("ReadingScore", typeof(int)); dt.Columns.Add("WritingScore", typeof(int)); dt.Columns.Add("MathScore", typeof(int)); dt.Columns.Add("TotalScore", typeof(int)); Random rand = new Random(); int rScore, wScore, mScore; for (int i = 0; i < 30; ++i) { rScore = rand.Next(400, 800); wScore = rand.Next(400, 800); mScore = rand.Next(400, 800); dt.Rows.Add( string.Format("S{0:000000}", rand.NextDouble() * 1000000), rScore, wScore, mScore, rScore + wScore + mScore ); } DataTable dtSorted = dt.Clone(); foreach (DataRow row in dt.Select("", "StudentID asc")) dtSorted.ImportRow(row); return dtSorted; } |
Downloads
Panel |
---|
Template: TestScoreReportTemplate.docx Output: ScoreReport_output.docx |