//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//usingSystem;usingSystem.Globalization;usingGrapeCity.Documents.Word; namespaceDsWordWeb.Demos{// This example demonstrates the available arithmetic operators// that can be used with the 'calc' report templates feature// to perform arithmetic operations on data.// For example, to insert the sum of two data fields,// the template '{{calc ds.a + ds.b)}}' can be used.// The data source used in this demo is a list of pairs of random decimal values.publicclassDataTplArithmeticOps {publicGcWordDocumentCreateDocx() {var rnd = Util.NewRandom();decimalnext() {returnnewdecimal(Math.Round((double)rnd.Next(1, 1000000) / rnd.Next(1, 100), 2)); } // A simple data source with pairs of random numeric data:var data = new[] {new { a = next(), b = next() },new { a = next(), b = next() },new { a = next(), b = next() },new { a = next(), b = next() },new { a = next(), b = next() },new { a = next(), b = next() }, }; var doc = newGcWordDocument(); // Add the data source: doc.DataTemplate.DataSources.Add("ds", data);var paras = doc.Body.Paragraphs; // Styles and templates to show results:var myListTemplate = doc.ListTemplates.Add(BuiltInListTemplateId.NumberDefault, "myListTemplate");var resStyle = doc.Styles[BuiltInStyleId.Strong]; // Print data and result for each record (\x200B is a zero-width space to prevent template expansion): paras.Add("Pairs of data values and results of arithmetic operations on them:", doc.Styles[BuiltInStyleId.Heading2]); var p = paras.Add("{{#ds}}a = ", doc.Styles[BuiltInStyleId.ListParagraph]); p.GetRange().Runs.Add("{{ds.a}}", resStyle); p.GetRange().Runs.Add(", b = "); p.GetRange().Runs.Add("{{ds.b}}\n", resStyle); p.GetRange().Runs.Add("{\x200B{ calc ds.a + ds.b }} : "); p.GetRange().Runs.Add("{{ calc ds.a + ds.b }}\n", resStyle); p.GetRange().Runs.Add("{\x200B{ calc ds.a - ds.b }} : "); p.GetRange().Runs.Add("{{ calc ds.a - ds.b }}\n", resStyle); p.GetRange().Runs.Add("{\x200B{ calc ds.a * ds.b }} : "); p.GetRange().Runs.Add("{{ calc ds.a * ds.b }}\n", resStyle); p.GetRange().Runs.Add("{\x200B{ calc ds.a / ds.b }} : "); p.GetRange().Runs.Add("{{ calc ds.a / ds.b }}\n", resStyle); p.GetRange().Runs.Add("{{/ds}}"); p.ListFormat.Template = myListTemplate; // Process the templates: doc.DataTemplate.Process(CultureInfo.GetCultureInfo("en-US")); // Add a short note describing the demo at the top of the document: paras.Insert("This example demonstrates the available arithmetic operators " +"that can be used with the 'calc' report templates feature " +"to perform arithmetic operations on data." +"For example, to insert the sum of two data fields, " +"the template '{{calc ds.a + ds.b)}}' can be used. " +"The data source used in this demo is a list of pairs of random decimal values. " +"Please see this sample source code for full details.",InsertLocation.Start); paras.Insert("Report templates: calc arithmetic operators", doc.Styles[BuiltInStyleId.Heading1], InsertLocation.Start); // Done:return doc; } }}