Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

Beginning in WordWriter version 4.1, WordTemplate now has the ability to evaluate a certain number

...

of formulas

...

 on data fields that are brought into a template.

Note

Word WordWriter formulas are only supported with the Word 2007 OOXML file format (.docx/.docm).

Code Sample: WordTemplate Formula Demo

...

This is an Enterprise Edition only feature.

Placing Formulas in Merge Fields

...

The following code opens the template and binds data to it using the SetDataSource and SetRepeatBlock methods, then streans the resulting document to the user:

Code Block

protected void OnDownload(object sender, EventArgs e)
{
     WordTemplate wt = new WordTemplate();
     wt.Open(Page.MapPath("templates/TestScoreReport.docx"));

     string[] fields = new string[] { "TestDate", "School", "Town", "Version" };
     object[] values = new object[] { 
     new DateTime(2009, 11, 16).ToShortDateString(),
          "Samuel Adams HS", 
          "Milbury",
          wt.Version
          };
     wt.SetDataSource(values, fields, "");

     DataTable dt = GetScores();
     wt.SetRepeatBlock(dt, "Items");

     wt.Process();
     wt.Save(Response, "ScoreReport.docx", false);
}

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;
}

...