DataTplCalcFormat.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 use of 'calc' Format function
'' with optional format string and locale arguments.
Public Class DataTplCalcFormat
    Function CreateDocx() As GcWordDocument
        Dim dsDate = {New DateTime(2023, 4, 12)}
        Dim dsNum = {123.456}

        Dim doc = New GcWordDocument()
        Dim list = doc.ListTemplates.Add(BuiltInListTemplateId.BulletDefault, "myListTemplate")
        Dim style = doc.Styles(BuiltInStyleId.ListParagraph)

        doc.DataTemplate.DataSources.Add("dsDate", dsDate)
        doc.DataTemplate.DataSources.Add("dsNum", dsNum)

        Dim paras = doc.Body.Paragraphs
        Dim p = paras.Add("Date formatting examples:", style)
        p.ListFormat.Template = list
        p = paras.Add("Date with default formatting:  {{calc Format(dsDate.value)}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1
        p = paras.Add("Date formatted as ('D', 'en-US'):  {{calc Format(dsDate.value, ""D"", ""en-US"")}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1
        p = paras.Add("Date formatted as ('D', 'fr-FR'):  {{calc Format(dsDate.value, ""D"", ""fr-FR"")}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1
        p = paras.Add("Date formatted as ('D', 'ja-JP'):  {{calc Format(dsDate.value, ""D"", ""ja-JP"")}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1

        p = paras.Add("Number formatting examples:", style)
        p.ListFormat.Template = list
        p = paras.Add("Number with default formatting:  {{calc Format(dsNum.value)}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1
        p = paras.Add("Number formatted as ('C', 'en-US'):  {{calc Format(dsNum.value, ""C"", ""en-US"")}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1
        p = paras.Add("Number formatted as ('C', 'fr-FR'):  {{calc Format(dsNum.value, ""C"", ""fr-FR"")}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1
        p = paras.Add("Number formatted as ('C3', 'ja-JP'):  {{calc Format(dsNum.value, ""C3"", ""ja-JP"")}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1

        p = paras.Add("Expression formatting examples:", style)
        p.ListFormat.Template = list
        p = paras.Add("Numeric expression:  {{calc Format(dsNum.value / 2)}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1
        p = paras.Add("Boolean expression:  {{calc Format(IsFirst(dsNum.value))}}", style)
        p.ListFormat.Template = list
        p.ListFormat.LevelNumber = 1

        doc.DataTemplate.Process(CultureInfo.GetCultureInfo("en-US"))

        '' Done:
        Return doc
    End Function
End Class