利用NVelocity 模版生成文本文件

namespace Common

{

    public class Tools

    {

        public string Process(string content, int startIndex, int length)

        {

            string result = content.Substring(startIndex, length);

            return result;

        }

    }

}

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Commons.Collections;

using System.IO;

using System.Data;

using Common;

using NVelocity.App;

using NVelocity.Runtime;



namespace NVelocity

{  

    class Program

    {

        static void Main(string[] args)

        {

            DataTable dt1 = new DataTable();

            dt1.Columns.Add("ID", typeof(string));

            dt1.Columns.Add("Name", typeof(string));

            dt1.Columns.Add("Add", typeof(string));      

            dt1.Rows.Add("001", "小明", "我家住黄土高坡上");

            dt1.Rows.Add("002", "小红", "我住在黄土高坡下");



            DataTable dt2 = new DataTable();

            dt2.Columns.Add("ID", typeof(string));

            dt2.Columns.Add("Name", typeof(string));

            dt2.Columns.Add("Score", typeof(string));         

            dt2.Rows.Add("001", "数学", 11);

            dt2.Rows.Add("001", "语文", 12);

            dt2.Rows.Add("001", "英语", 13);

            dt2.Rows.Add("002", "数学", 21);

            dt2.Rows.Add("002", "语文", 22);

            dt2.Rows.Add("002", "英语", 23);



            Tools tools = new Tools();



            VelocityEngine vltEngine = new VelocityEngine();//模板引擎实例化

            ExtendedProperties ep = new ExtendedProperties();//模板引擎参数实例化

            ep.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");//指定资源的加载类型

            ep.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, "f:\\Template");//指定资源的加载路径   

            ep.AddProperty(RuntimeConstants.INPUT_ENCODING, "gb2312");//输出格式

            ep.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "gb2312");//输出格式

            vltEngine.Init(ep);



            Template template = vltEngine.GetTemplate("Temp.txt");//加载模板

            VelocityContext vltContext = new VelocityContext(); //当前的数据信息载体集合

            vltContext.Put("Table1", dt1);

            vltContext.Put("Table2", dt2);

            vltContext.Put("Tools", tools);



            StringWriter vltWriter = new StringWriter();

            template.Merge(vltContext, vltWriter);



            Console.Write(vltWriter.ToString());



            Console.ReadLine();

        }

    }

}

 

模版:

我是开头



#foreach($user1 in $Table1.Rows)

$user1.Name

$Tools.Process($user1.Add, 0, 7)

#foreach($user2 in $Table2.Rows)

#if($user2.ID == $user1.ID)

$user2.Name $user2.Score

#end

#end



--------------------我是记录分隔符--------------

#end



我是结尾

输出结果:

利用NVelocity 模版生成文本文件

 

你可能感兴趣的:(velocity)