利用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.输入如下红色标记部 ...
随机推荐
- Mono addin 学习笔记 3
典型的基于Mono addin插件框架的应用程序有以下一个部分组成: 1. 主应用程序:提供了一系列的扩展点(Extension Point)供其他应用进行扩展: 2. 扩展插件: 其部署结构图如下为 ...
- Jmeter组件5. 逻辑控制
逻辑控制组件也有不少,但是用到的情况也不多,只打算举个While controller结合Regular Expression Extractor的例子 Condition,跳出循环的条件 如果放空, ...
- WebStorage 和 Cookie的区别
sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...
- MsSqlServer 复制分发概述
Replication方案可以分为Snapshot Replication, Transactional Replication, Peer-2-Peer Replication, Merge Rep ...
- SQL SERVER连接、合并查询
----创建测试表MyStudentInfoCREATE table MyStudentInfo( Id int not null primary key, Name varchar(16), ...
- java基础七 [图形用户接口](阅读Head First Java记录)
到目前为止我们接触的都是Java的命令行,但是为了让用户使用,必须有图形化界面,所以这章主要讲的是怎么使用GUI(图形用户接口) 创建一个GUI:javax.swing.* 本章讲的布局相关内容都 ...
- window的git extensions保存密码
git extensions每次pull与push均要输入密码,为解决该问题,执行以下操作: win+r,在运行中输入:%USERPROFILE% 找到其中的.gitconfig文件,找到[crede ...
- 如何在MAC上使用SVN,简单几行命令搞定
如果你要使用SVN管理代码,如果不是迫不得已,还是看看git吧,但是SVN也要知道怎么用,原理是相似的. 首先,要准备的东西:svnX软件 https://pan.baidu.com/s/1mhEay ...
- MVC 学习(二)之Linq to Sql 简单Demo
Linq to Entities 已经我的一篇博文中阐述了,这里阐述一下简单的Linq to Sql 的增删改查.Linq to sql 与Linq to Entities虽然同属于DataBase- ...
- 技术英文单词贴--B
B breadcrumb 面包屑 bubble 冒泡