有关使用 Aspose.Words for .NET来动态的生成word文档中的数据表
来源:才华咖 本文已影响2W人
来源:才华咖 本文已影响2W人
1、概述
最近项目中有一个这样的需求:导出word文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的。看到这里,您也许马上想到用模板导出!而且中自带有这个组件:,暂且可以满足需求吧。但这个组件也是有局限性的,例如客户端必须装office组件,而且编码复杂度高。最麻烦的需求是后面那个----动态的表格列头!下面就介绍如何使用 s for 来动态的生成word文档中的数据表格。
2、正文
s, 是Aspose“家族类库”之一。除这个以外,还有其他许多厉害的类库例如(操作PDF文件的类库)、h(操作 Flash文件的类库)、rt(操作报表的类库)等等,大家有兴趣的可以上官方网研究下。这些类库都包含两种语言,一种是java ,另一种是.这里主要是介绍s for 。s for 功能非常强大,您不需要安装office组件,都可以用这个来生成word文档。s支持 DOC,DOCX,OOXML,RTF格式,HTML格式,OpenDocument格式,PDF格式,和其他格式 。从下面图中,大家可以更加详细的了解s的架构。有一点忘了提,这套类库是收费的,在本文后面我会提供一个破解版的下载地址给大家的。
在介绍如何动态的生成的表格之前,我们看看这个类库是如何根据模板来生成值的:
首先,我们来建立一个 word模板: 。在文档中需要生成的数据地方建立一个书签,如图:
在这里大家可以看到,我们主要是通过BookMark来操作,做为动态的数据的'源。
下面我们来看看具体是怎么实现的:
复制代码 代码如下:
string tmppath = Server.MapPath("~/");
Document doc = new Document(tmppath); //载入模板
if (marks["name"] != null)
{
Bookmark mark = marks["name"];
= "张三公司";
}
("", , InWord, Response); //保存为doc,并打开
是不是很简单?好了,下面我们来看看文章开头所讲的如何动态生成word表格。
s对word文档对象中的操作。在生成表格上有点类似二维数组。还记得需求说的“表格列数由用户控制吗”,所以我们要在模板上定义一个含有表头的表格,这里要画出您数据表中可以显示的所有列头,这样做主要是考虑到用户可以自己去减少不需要显示列头。这里要注意,书签和列头文字的顺序不能颠倒,大家看下面代码就知道了。如下图:
灰色的部分就是bookmark了。s生成表格的原理就如同一个二维数组,也就是一个个单元格的去生成。我们来看看代码部分是如何实现的:
复制代码 代码如下:
DocumentBuilder builder = new DocumentBuilder(doc);
DataTable products = ata(); //数据源
int count = 0;
//记录要显示多少列
for (var i = 0; i < t; i++)
{
if (marks[mns[i]()] != null)
{
Bookmark mark = marks[mns[i]()];
= "";
count++;
}
}
listcolumn = new (count);
for (var i = 0; i < count; i++)
{
ToCell(0, 0, i, 0); //移动单元格
if (Type == markStart)
{
((entNode as BookmarkStart));
}
}
double width = h;//获取单元格宽度
ToBookmark("table"); //开始添加值
for (var m = 0; m < t; m++)
{
for (var i = 0; i < t; i++)
{
rtCell(); // 添加一个单元格
Style = le;
r = k;
h = width;
icalMerge = ;
e([m][listcolumn[i]]ring());
}
ow();
}
marks["table"] = ""; // 清掉标示
("", , InWord, onse);
我们来看看最后生成的效果:
到这里我们这一部分的功能就已经全部完成了。
也许这种方法并不是最好,如果朋友们有兴趣不妨研究研究,大家一起交流下。
OFFICE2007每次打开word时都显示配置microsoft office professio
whats your plan for dragon boat festival英语作文
how to be a good person初中英语作文
Diaspora Finance Powers Global Development美文欣赏
Lesson4Whatdidyoudoafterschool五年级英语教学设计
Should women work after marriage英语作文
Some words for this special occasion英文美文欣赏
A Letter to the Editor of a Newspaper英语四级作文
关于ASP.NET DropDownList控件的使用方法
Some Great Wonders in London英语作文
英语四级作文 Learn to Stand on Your Own Feet(学会自立)
How to make good friends高中英语作文
Efforts Urged to Improve Womens Reproductive Health英语阅读
How to be a good person英语作文
Word Password Recovery破解密码的方法
Walk for children in poor areas英语作文
WebSphere MQ Solution Designer认证考试
How to keep a good relationship with parents英语作文
初三年级英语课文复习 Unit 1. Try not to translate every word
A Story Of My Friend Who Ecel大学英语作文
Zend studio for eclipse中使php可以调用mysql相关函数的设置方
英语阅读:Why Apple says it's slowing down older iPhone
初三英语《The worlds population Lesson》教案设计
word提示Microsoft Office Word已停止工作的解决方法
World Day to Combat Desertification大学英语作文
有关使用 Aspose.Words for .NET来动态的生成word文档中的数据表
Jolie drops battle over perfume named Shilohy英语作文
学个词Learn a Word:fast food
八年级《unit8 Why don’t you get her a scarf? Period1》评课稿
The Advice From Hollywood Female Stars高中英语作文
如何破解winRAR加密文件 Microsoft Word 文档
access数据库的使用实验报告
Word文档格式的设置
Books Are Good Friends英语作文
JavaScript在Android的WebView中parseInt函数转换不正确
小学英语Lesson13WhereDoTheyWork备课教案
The Role of Migrant Workers英语作文
使用数据库说课稿
What Do Students Need English For大学英语作文
中考英语阅读理解答案A report from the United Nations