DataTplCultureIn.cs
//
// This code is part of Document Solutions for Word demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using System.Globalization;
using System.Xml;
using GrapeCity.Documents.Word;

namespace DsWordWeb.Demos
{
    // This example shows how text input data that is stored in different data
    // sources that are formatted for different cultures (in this example,
    // floating point values are stored with points and commas as decimal
    // separators) can be correctly processed by DsWord's report templates
    // if the correct culture is specified for each data source.
    public class DataTplCultureIn
    {
        public GcWordDocument CreateDocx()
        {
            // Strings with floating-point data using point as the decimal separator:
            var dsUs = new string[] { "1.234", "56.78", "987.65", "3.14" };
            // Same data using comma as the decimal separator:
            var dsFr = new string[] { "1,234", "56,78", "987,65", "3,14" };

            var doc = new GcWordDocument();
            doc.Body.Paragraphs.Add(
                "The two columns of data below come from two different data sources, " +
                "with different cultures specified for each data source. " +
                "Numbers in the left column were converted from strings with point as the decimal separator, " +
                "with \"en-US\" culture specified for the data source. " +
                "Numbers in the right column were converted from strings with comma as the decimal separator, " +
                "with \"fr-FR\" culture specified for the data source. " +
                "Both sets of data were converted correctly using the \"todouble()\" formatter.");
            doc.Body.Paragraphs.Add("{{#dsUs}:seq(x)}{{#dsFr}:follow(x)}{{dsUs.value}:todouble()} == {{dsFr.value}:todouble()}{{/dsFr}}{{/dsUs}}");
            doc.DataTemplate.DataSources.Add("dsUs", dsUs, CultureInfo.GetCultureInfo("en-US"));
            doc.DataTemplate.DataSources.Add("dsFr", dsFr, CultureInfo.GetCultureInfo("fr-FR"));

            // Generate the document by template processing
            doc.DataTemplate.Process(CultureInfo.GetCultureInfo("en-US"));

            // Done:
            return doc;
        }
    }
}