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 |
---|
WordWriter formulas are only supported with the Word 2007 OOXML file format (.docx/.docm). This is an Enterprise Edition only feature. |
...
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;
}
|
...