Aspose.Words将Word模板打印出来
利用Aspose.Words将制作好的模板,输出出来自己所需的文件
/// <summary>
/// 打印信息和列表
/// </summary>
/// <param name="dtinfo"></param>
/// <param name="dtlist"></param>
public void Print_InfoList(DataTable dtinfo, Dictionary<string, string> dict, DataTable dtlist, int tableindex)
{
//Print_InfoList(dtinfo, dict, dtlist, false);
Document maindoc = new Document();
Document newdoc = new Document(path);
DocumentBuilder builder = new DocumentBuilder(newdoc);
newdoc.Range.Replace(WordTabChar + "title" + WordTabChar, title, false, false);
if (dtinfo != null)
{
for (int n = ; n < dtinfo.Columns.Count; n++)
{
string fieldname = dtinfo.Columns[n].ColumnName.ToLower();
try
{
newdoc.Range.Replace(WordTabChar + fieldname.ToLower() + WordTabChar, dtinfo.Rows[][fieldname].ToString(), false, false);
}
catch { }
}
}
if (dict != null)
{
foreach (string k in dict.Keys)
{
newdoc.Range.Replace(WordTabChar + k.ToLower() + WordTabChar, dict[k].ToString(), false, false);
}
}
Aspose.Words.Tables.Table dtdoc = (Aspose.Words.Tables.Table)newdoc.GetChild(NodeType.Table, tableindex, true);//定位第一个table
PositionPro pos = new PositionPro();
for (int r = ; r < dtdoc.Rows.Count; r++)
{
for (int c = ; c < dtdoc.Rows[r].Cells.Count; c++)
{
if (dtdoc.Rows[r].Cells[c].Range.Text.ToLower().Contains("#start#"))
{ pos.row_start = r;
pos.cell_start = c;
pos.row_end = r;
pos.cell_end = c;
}
if (dtdoc.Rows[r].Cells[c].Range.Text.ToLower().Contains("#end#"))
{
pos.row_end = r;
pos.cell_end = c;
}
} }
newdoc.Range.Replace("#START#", "", false, false);
newdoc.Range.Replace("#END#", "", false, false); DataTable dt = dtlist;
List<string> celltabs = new List<string>();
for (int t = pos.cell_start; t < dtdoc.Rows[pos.row_start].Cells.Count; t++)
{
string colname = dtdoc.Rows[pos.row_start].Cells[t].Range.Text.Replace(WordTabChar, "").Replace("\a", "");
celltabs.Add(colname);
dtdoc.Rows[pos.row_start].Cells[t].Range.Replace(WordTabChar + colname + WordTabChar, "", false, false);
}
if (dt.Rows.Count > pos.rownum)
{
int addrow = dt.Rows.Count - pos.rownum;
for (int a = ; a < addrow; a++)
{
Aspose.Words.Node newrow = dtdoc.Rows[pos.row_start].Clone(true);
dtdoc.Rows.Insert(pos.row_start + , newrow);
}
}
for (int m = ; m < dt.Rows.Count; m++)
{
for (int n = ; n < celltabs.Count; n++)
{
try
{
builder.MoveToCell(tableindex, pos.row_start + m, pos.cell_start + n, );
builder.Write(dt.Rows[m][celltabs[n].ToString()].ToString());
}
catch { }
}
}
maindoc = newdoc;
maindoc.Protect(ProtectionType.AllowOnlyFormFields);//只读无法编辑,因为没有密码确认
this.SaveDocument(maindoc);
}
//输出文件
private void SaveDocument(Document doc)
{ SaveOptions saveop = SaveOptions.CreateSaveOptions(filename + ".doc");
doc.Save(HttpContext.Current.Response, filename + ".doc", ContentDisposition.Attachment, saveop); }
Aspose.Words将Word模板打印出来的更多相关文章
- 使用com.aspose.words将word模板转为PDF乱码解决方案(window下正常)
最近在做电子签名过程中,需要将合成的电子签名的word文件(正常)转换为pdf文件时,在开发平台window下转换没有问题,中文也不会出现乱码.但是将项目部署到正式服务器(Linux)上,转换出来的p ...
- Aspose Word模板使用总结
Aspose Word模板使用总结 1.创建word模版,使用MergeFeild绑定数据 新建一个Word文档,命名为Template.doc 注意:这里并不是输入"< ...
- Aspose.words Java基于模板生成word之纯文本内容
一,创建word模板 1.新建一个word文档 2.分别给四个参数设置域 (1)将鼠标置于想要设置域的地方 (2)设置域名 (3)设置好之后如下图所示 二,项目 1,引入maven依赖 <dep ...
- 向Word模板中填充数据
现在有这样的需求,给Word文档的指定位置填充上特定数据,例如我们有一个终端,用来打印员工的薪资证明,对于一个公司来说,他的薪资证明模板是固定的,变化的地方是员工姓名,部门,职位等.我们只需要将这些指 ...
- 根据指定Word模板生成Word文件
最近业务需要批量打印准考证信息 1.根据Table数据进行循环替换,每次替换的时候只替换Word中第一个Table的数据, 2.每次替换之后将Word中第一个Table数据进行复制,将复制Table和 ...
- ActiveXObject Word.Application 打印小票
javascript 时间格式 Date.prototype.format = function (format) { var o = { "M+": this.getMonth( ...
- javascript下用ActiveXObject控件替换word书签,将内容导出到word后打印第1/2页
由于时间比较紧,没多的时候去学习研究上述工具包,现在用javascript操作ActiveXObject控件,用替换word模板中的书签方式解决. 最近有需求将数据导出到word里,然后编辑打印. 想 ...
- Aspose.Words给word文档加水印
需求:在一些重要的Word文档需要打印时,添加水印以明出处. 方案:使用Aspose组件给word文档 代码:干货如下 /// <summary> /// Inserts a waterm ...
- Aspose.Words对于Word的操作
对于word操作一般是对已有word模板的操作,直接新建的不考虑,网上教程很多,自己看吧一般有以下几种办法(忘了具体几种了,一般情况下以下就够了)1.通过书签替换顾名思义,就是先定义一个书签,然后在书 ...
随机推荐
- 【C++】四种排序算法的时间比较
四种排序算法的时间比较 [注]clock函数对输入(用户输入)元素N排序的计时 #include<iostream> #include<time.h> using namesp ...
- SpringBoot入门系列(转)
SpringBoot入门系列:第一篇 Hello World http://blog.csdn.net/lxhjh/article/details/51711148
- MVC 运行视图出错
IIS服务器web核心没有安装造成的
- log日志模块得作用
import logginglogger=logging.getLogger()logger.setLevel(logging.DEBUG)#控制台输出日志'''consle=logging.Stre ...
- CSS font-style中italic和Oblique有何区别 标签: css字体 2017-01-05 14:42 60人阅读 评论
*要搞清楚这个问题,首先要明白字体是怎么回事.一种字体有粗体.斜体.下划线.删除线等诸多属性. 但是并不是所有字体都做了这些,一些不常用的字体,或许就只有个正常体,如果你用Italic,就没有效果了~ ...
- 29.es路由原理
主要知识点 1.document路由到shard的理解及原理 2.路由算法:shard = hash(routing) % number_of_primary_shards 3.routing值(_i ...
- Golang - 爬虫案例实践
目录 Golang - 爬虫案例实践 1. 爬虫步骤 2. 正则表达式 3. 并发爬取美图 Golang - 爬虫案例实践 1. 爬虫步骤 明确目标(确定在哪个网址搜索) 爬(爬下数据) 取(去掉没用 ...
- C++ 类型转化(运算符重载函数)和基本运算符重载(自增自减)
类型转化(运算符重载函数) 用转换构造函数可以将一个指定类型的数据转换为类的对象.但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据).在C ...
- 【hihocoder 1329】平衡树·Splay(Splay做法)
[题目链接]:http://hihocoder.com/problemset/problem/1329 [题意] [题解] 插入操作:-,记住每次插入之后都要把它放到根节点去就好; 询问操作:对于询问 ...
- 【hihoCoder挑战赛28 A】异或排序
[题目链接]:http://hihocoder.com/problemset/problem/1509 [题意] [题解] 每次找到相邻两个数的二进制形式中; 不同的最高位; 显然S在这一位必然是确定 ...