利用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("", "小明", "我家住黄土高坡上");
dt1.Rows.Add("", "小红", "我住在黄土高坡下"); 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("", "数学", );
dt2.Rows.Add("", "语文", );
dt2.Rows.Add("", "英语", );
dt2.Rows.Add("", "数学", );
dt2.Rows.Add("", "语文", );
dt2.Rows.Add("", "英语", ); 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 模版生成文本文件的更多相关文章
- 利用T4模版生成EF实体
直接上代码,只需要修改EF实体的地址就可以了. <#@ template language="C#" debug="false" hostspecific ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- asp.net根据模版生成Word小记
最近遇到一个问题,客户提了一个新的需求,客户想要将显示在网页上的数据导出成Word进行套打,由于之前没有接触过这一块的内容,自己写的系统也没有使用这种功能,现在重头学习. 具体思路: 1.先制作Wor ...
- Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"
Html Table用JS导出excel格式问题 我在网上找的JS把HTML Tabel导出成EXCEL.但是如果Table里的数字内容为0开的的导成Excel后会自动删除0,我想以text的格式写入 ...
- java+jxls利用excel模版进行导出
大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复 ...
- 利用代码生成工具生成基于ABP框架的代码
在前面随笔,我介绍了整个ABP优化过框架的分层模型,包括尽量简化整个ABP框架的各个层的关系,以及纳入一些基类的辅助处理,使得我们对应业务分层类或者接口尽可能减少代码,并具有生产环境所需要的基类接口, ...
- Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html
Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...
- 利用GCC编译器生成动态链接库和静态链接库
转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ...
- 解析利用wsdl.exe生成webservice代理类的详解
利用wsdl.exe生成webservice代理类:根据提供的wsdl生成webservice代理类1.开始->程序->Visual Studio 2005 命令提示2.输入如下红色标记部 ...
随机推荐
- myEclipse
破解myEclipse 建立一个java项目,将reg.java放入,并且运行在控制台 输入账户 回车就会出现 序列号 菜单栏--->myeclipse-->substription in ...
- appium+python:自己写的一个滑动控件的方式
#调用方式roll_ele("ID","ele_id","7","up",3)#将控件分为7格,从底部倒数第二格向上滑动 ...
- MFC之动态创建按钮
打开VS 创建MFC基于对话框的工程,在对话框初始化方法中动态创建一个按钮实例: 1> CButton *pMyButton = new CButton();CEdit *pMyEdit = n ...
- Excel—“撤销工作表保护密码”的破解并获取原始密码
您是否遇到过这样的情况:您用Excel编制的报表.表格.程序等,在单元格中设置了公式.函数等,为了防止其他人修改您的设置或者防止您自己无意中修改,您可能会使用Excel的工作表保护功能,但时间久了保护 ...
- C++学习基础六——复制构造函数和赋值操作符
1.什么是复制构造函数 复制构造函数:是构造函数,其只有一个参数,参数类型是所属类的类型,且参数是一个const引用. 作用:将本类的成员变量赋值为引用形参的成员变量. 2.什么是赋值操作符 赋值操作 ...
- Linux操作系统奥秘02-系统引导(GRUB)
GRUB的加载流程 GRUB是GNU的一款多重引导软件.GRUB包含了3个重要的文件:stage1 ,e2fsstage1_5,stage2.这三个文件分别代表了GRUB运行的3个阶段. 1.stag ...
- javascript高级程序设计--笔记01
概述 JavaScript的实现包含三个部分: 1 核心(ECMAScript) 提供核心语言功能 2 文档对象模型(DOM) 一套提供了访问以及操作网页内容的API 3 浏览器对象模型( ...
- XidianOJ 1120 Gold of Orz Pandas
题目描述 Orz Panda is addicted to one RPG game. To make his character stronger, he have to fulfil tasks ...
- Angular JS中 Promise用法
一.Promise形象讲解A promise不是angular首创的,作为一种编程模式,它出现在1976年,比js还要古老得多.promise全称是 Futures and promises. 而在j ...
- ORA-01704: string literal too long
update mkt_page_links set longdescription = ' {some html text > 4000 char} ' where menuidno = 310 ...