DataTplCalcConvert.vb
''
'' This code is part of Document Solutions for Word demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.Globalization
Imports GrapeCity.Documents.Word

'' This example demonstrates the available conversion functions
'' that can be used with the 'calc' report templates feature.
Public Class DataTplCalcConvert
    Function CreateDocx() As GcWordDocument
        '' A simple data source to be used by the logical functions:
        Dim data = {True}

        Dim doc = New GcWordDocument()

        '' Add the data source:
        doc.DataTemplate.DataSources.Add("ds", data)

        '' Styles and templates to show results:
        Dim bulletListTemplate = doc.ListTemplates.Add(BuiltInListTemplateId.BulletDefault, "bulletListTemplate")
        Dim exStyle = doc.Styles(BuiltInStyleId.ListParagraph)
        Dim resStyle = doc.Styles(BuiltInStyleId.Strong)

        Dim paras = doc.Body.Paragraphs
        Dim add As Action(Of String) =
            Sub(expr)
                '' Four zero-width spaces are inserted after the opening brace to prevent template expansion:
                paras.Add(expr.Insert(1, New String(ChrW(&H200B), 4)) + " :  ", exStyle).ListFormat.Template = bulletListTemplate
                paras.Last.GetRange().Runs.Add(expr, resStyle)
            End Sub

        add("{{ calc CBool(""True"") }}")
        add("{{ calc CBool(""False"") }}")
        add("{{ calc CByte(""127"") }}")
        add("{{ calc CChar(" + Chr(34) + ChrW(&H4249) + Chr(34) + ") }}")
        add("{{ calc CDate(""1-jan-2001"") }}")
        add("{{ calc CDbl(""123.456"") }}")
        add("{{ calc CDec(""123.456"") }}")
        add("{{ calc CInt(""123"") }}")
        add("{{ calc CLng(""123456789"") }}")
        add("{{ calc CObj(""Nothing"") }}")
        add("{{ calc CByte(""123"") }}")
        add("{{ calc CShort(""123"") }}")
        add("{{ calc CSng(""123"") }}")
        add("{{ calc CStr(123.456) }}")
        add("{{ calc CType(123, ""System.Int64"") }}")
        add("{{ calc CUInt(""123"") }}")
        add("{{ calc CULong(""123"") }}")
        add("{{ calc CUShort(""123"") }}")

        '' 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 conversion functions " +
            "that can be used with the 'calc' report templates feature. " +
            "Please see this example's source code for full details.",
            InsertLocation.Start)
        paras.Insert("Report templates: available calc conversion functions", doc.Styles(BuiltInStyleId.Heading1), InsertLocation.Start)

        '' Done:
        Return doc
    End Function
End Class