用Aspose.Words for .NET动态生成word文档中的数据表格

.net6+aspose.words导出word并转pdf 本文使用net6框架,aspose.word破解激活并兼容net6,导出word模板并兼容识别html并给其设置字体,前端直接浏览器下载,后端保存文件并返回文件流,还有批量导出并压缩zip功能 安装Aspose.Words的nuget包选择21.8.0 版本(此版本可用于net6)。本文破解这个版本免费无水印,可适用21.8.0以下至18.x以上。 阅读详情

转至(http://www.cnblogs.com/sendrylee/archive/2010/04/01/1702463.html)

 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的。看到这里,您也许马上想到用模板导出!而且.NET中自带有这个组件:Microsoft.Office.Interop.Word,暂且可以满足需求吧。但这个组件也是有局限性的,例如客户端必须装 office组件,而且编码复杂度高。最麻烦的需求是后面那个----动态的表格列头!下面就介绍如何使用 Aspose.Words for .NET来动态的生成word文档中的数据表格。

2、正文

    Aspose.Words, 是Aspose“家族类库”之一。除这个以外,还有其他许多厉害的类库例如Aspose.pdf(操作PDF文件的类库)、Aspose.Flash(操作 Flash文件的类库)、Aspose.report(操作报表的类库)等等,大家有兴趣的可以上官方网研究下。这些类库都包含两种语言,一种是java ,另一种是.NET.这里主要是介绍Aspose.Words for .NET。Aspose.Words for .NET功能非常强大,您不需要安装office组件,都可以用这个来生成word文档。Aspose.Words支持 DOC,DOCX,OOXML,RTF格式,HTML格式,OpenDocument格式,PDF格式,和其他格式 。从下面图中,大家可以更加详细的了解Aspose.Words的架构。有一点忘了提,这套类库是收费的,在本文后面我会提供一个破解版的下载地址给大家的。

在介绍如何动态的生成的表格之前,我们看看这个类库是如何根据模板来生成值的:

首先,我们来建立一个 word模板:template.doc 。在文档中需要生成的数据地方建立一个书签,如图:

 

在这里大家可以看到,我们主要是通过BookMark来操作,做为动态的数据的源。

下面我们来看看具体是怎么实现的:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> string  tmppath  =  Server.MapPath( " ~/template.doc " );
Document doc  =   new  Document(tmppath);  // 载入模板
if  (doc.Range.Bookmarks[ " name " ]  !=   null )
{
     Bookmark mark  =  doc.Range.Bookmarks[ " name " ];
     mark.Text  =   " 张三公司 " ;
}
doc.Save( " demo.doc " , SaveFormat.Doc, SaveType.OpenInWord, Response);   // 保存为doc,并打开

 是不是很简单?好了,下面我们来看看文章开头所讲的如何动态生成word表格。

Aspose.Words对word文档对象中的操作。在生成表格上有点类似二维数组。还记得需求说的“表格列数由用户控制吗”,所以我们要在模板上定义一个含有表头的表格,这里要画出您数据表中可以显示的所有列头,这样做主要是考虑到用户可以自己去减少不需要显示列头。这里要注意,书签和列头文字的顺序不能颠倒,大家看下面代码就知道了。如下图:

灰色的部分就是bookmark了。Aspose.Words生成表格的原理就如同一个二维数组,也就是一个个单元格的去生成。我们来看看代码部分是如何实现的:

代码
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> DocumentBuilder builder  =   new  DocumentBuilder(doc);
DataTable products  =   this .GetData();  // 数据源
int  count  =   0 ;
// 记录要显示多少列
for  (var i  =   0 ; i  <  products.Columns.Count; i ++ )
{
   
if  (doc.Range.Bookmarks[products.Columns[i].ColumnName.Trim()]  !=   null )
    {
       Bookmark mark  =  doc.Range.Bookmarks[products.Columns[i].ColumnName.Trim()];
        mark.Text  =   "" ;
        count ++ ;
    }
}
System.Collections.Generic.List < string >  listcolumn  =   new  System.Collections.Generic.List < string > (count);
for  (var i  =   0 ; i  <  count; i ++ )
{
     builder.MoveToCell( 0 ,  0 , i,  0 );  // 移动单元格
      if  (builder.CurrentNode.NodeType  ==  NodeType.BookmarkStart)
      {
          listcolumn.Add((builder.CurrentNode  as  BookmarkStart).Name);
      }
}
double  width  =  builder.CellFormat.Width; // 获取单元格宽度
builder.MoveToBookmark( " table " );         // 开始添加值
for  (var m  =   0 ; m  <  products.Rows.Count; m ++ )
{
     
for  (var i  =   0 ; i  <  listcolumn.Count; i ++ )
     {
          builder.InsertCell();            //  添加一个单元格                    
          builder.CellFormat.Borders.LineStyle = LineStyle.Single;
          builder.CellFormat.Borders.Color  =  System.Drawing.Color.Black;
          builder.CellFormat.Width  =  width;
          builder.CellFormat.VerticalMerge  =  Aspose.Words.Tables.CellMerge.None;
          builder.Write(products.Rows[m][listcolumn[i]].ToString());
      }
      builder.EndRow();
}
doc.Range.Bookmarks[ " table " ].Text  =   "" ;    // 清掉标示  
doc.Save("baojiadan.doc", SaveFormat.Doc, SaveType.OpenInWord, page.Response);

 

我们来看看最后生成的效果:

到这里我们这一部分的功能就已经全部完成了。

也许这种方法并不是最好,如果朋友们有兴趣不妨研究研究,大家一起交流下。

附:Aspose.Words for NET 6.5 破解版下载地址

.NET 通过Word模板,使用AsposeWord进行数据动态导出Word 文章目录先看一下导出的整体效果(如下图),其中标注的区域都是通过后台动态生成的:一、先在Word中建立好表格模板1.1、参数创建方法(Word和WPS)1.1.1、Office中Word域的创建1.1.1.1、选中指定的单元格 -> 点击头部工具栏中的”插入“ -> 选择 ”文档部件“ -> 选择 ”域“;1.1.1.2、在左侧的 “选择域” 中找到 “Mergefield” -> 在域名中填写变量名(==注:填写的域名需要和后台中定义的字段名数组中的字段一样,这样才会填充对应的数. 阅读详情

相关推荐

Aspose.Words for Net破解版无水印附有API开发文档

Aspose.Words for Net破解版的类库,生成的word文档没有水印和广告等字样,附有API开发文档,在此贡献给开发者们。

Aspose.Words 22.11.0 Crack | Aspose.Words

破解版Aspose.Words 及其产品系列是一组 Word 文档,它们处理 API 以在 .NET、Java、Android 中创建、编辑、打印、读取和稍后转换所有格式化的 Word 文档和文件格式、云、SSRS、SharePoint 和最后但并非最不重要的 Jasper Reports 开发环境。上面提到的 API 不需要在用户的机器上安装 Microsoft Office、Microsoft Word 来处理 word 文档的格式。

控件与插件之大全 6819

Aspose.Words破解版

Aspose.Words For .Net。无需Microsoft Word也可在任何平台上满足Word文档的一切操作需求。去除保存后的版权说明,

Aspose.Words for .NET 18.7破解版(支持NET.Core2.0及以上)

Aspose.Words for .NET 18.7破解版(支持NET.Core2.0及以上)下载地址:https://zp.xz-hc.com/news/show-4204.html

seiyazpp的博客 9740

Aspose.Words for .NET 6.5 破解

Aspose.Words for .NET 6.5 破解版本,自己这边是可以用的

Aspose.Words for .NET v13.2.0.0 破解

Aspose.Words是一款先进的文档处理控件,在不使用Microsoft Words的情况下,它可以使用户在各个应用程序中执行各种文档处理任务,其中包括文档的生成、修改、渲染、打印,文档格式转换和邮件合并等文档处理。此外,Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocument, PDF, XPS, EPUB和其他格式。 已破解,在VS里直接引用即可,压缩包里包括Demo

【.NET】用Aspose.Words for .NET动态生成word文档中的数据表格

1、概述   最近项目中有一个这样的需求:导出word文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的。看到这里,您也许马上想到用模板导出!而且.NET中自带有这个组件:Microsoft.Office.Interop.Word,暂且可以满足需求吧...

u013938578的博客 1037

Aspose.Cells 和Words for .NET合集(已破解)

Aspose.Cells 和Words for .NET合集 均已破解,亲测可以使用

aspose.words java 导出word表格,用Aspose.Words for .NET动态生成word文档中的数据表格(2)...

是不是很简单?好了,下面我们来看看文章开头所讲的如何动态生成word表格。Aspose.Words对word文档对象中的操作。在生成表格上有点类似二维数组。还记得需求说的“表格列数由用户控制吗”,所以我们要在模板上定义一个含有表头的表格,这里要画出您数据表中可以显示的所有列头,这样做主要是考虑到用户可以自己去减少不需要显示列头。这里要注意,书签和列头文字的顺序不能颠倒,大家看下面代码就知道了。如下...

weixin_39910824的博客 644

Aspose.Words for .NET and core 18.3 破解版

aspose.words 18.3破解版,18年3月最新版本,是.net 2.0版本,.net 2.0以上版本都支持调用,主要改进了word2013的兼容性以及图形渲染等问题

Aspose.Words破解版本

Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式。使用Aspose.Words可以在不使用Microsoft.Word的情况下生成、修改、转换和打印文档

asp.net下用Aspose.Words for .NET动态生成word文档中的数据表格的方法(转)

转自:http://www.codesky.net/article/doc/201004/20100417061062.htm 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的。看到这里,您也许马上想到用模板...

weixin_34355881的博客 170

了解随机振动疲劳分析中 Ansys nCode DesignLife 的平均应力校正

通过选择静态环境,我们可以将其结果视为疲劳计算的平均应力,如图 3 所示,因此从静态偏移载荷工况中提取的平均应力用于转移预测雨流计数中所有循环的平均值。您可以通过观看下面的教学视频获得宝贵的见解,该视频将指导您完成利用 Ansys nCode DesignLife 分析平均应力对随机振动载荷下结构的影响的过程。它基于 R 比率或平均应力水平。另一方面,平均应力校正可以帮助消除平均应力的负面影响,提高结果的保真度。Ansys nCode 提供先进的平均应力校正技术,使工程师能够考虑平均应力对疲劳寿命的影响。

jkh920184196的博客 1519

推荐.NET使用Aspose.Words动态生成word文档数据表格(附Aspose.Words for NET 6.5 破解版下载)...

推荐.NET使用Aspose.Words动态生成word文档数据表格(附Aspose.Words for NET 6.5 破解版下载) 文章来自学IT网:http://www.xueit.com/asp.net/show-6319-1.aspx 本文介绍这个Aspose.Words for .NET来动态生成word数据表格,很不错哦。1、概述  最近项目中有一个这样的需求:导出word ...

linuxstuding 226

在ROS中使用行为树

在ROS中使用行为树 我提供的工程示例文件: demo链接 文章目录在ROS中使用行为树0、 学习本教程的前提1、 behaviorTree 库安装(ROS使用下的安装方式)2、 处理 behaviortree 库并准备好 service 和 ros action2.1 对ROS 的 service 和 action 进行封装,使其在 behaviortree 上使用更加方便。2.2 创建一个 service 和一个 action2.3 创建与决策树相关的数据类型2.4 修改`package.xml`文件2

qq_37416258的博客 6376

波浪补偿控制(AHC)之波浪发生器(CODESYS完整源代码)

波浪发生器平台详细算法和结构介绍请参看下面博客文章:CODESYS平台如何建立FC和FB,请参看下面博客文章:

RXXW_Dor的博客 401

Aspose.Words for Net之在Word中创建表格

Aspose.Words是一款优秀的工具,能在不依赖Microsoft.Office环境的条件下实现对Word文档的处理和生成。通过Aspose.Words提供的相关API,能在Word中根据需要创建各种各样的表格。 表格的展现形式往往是由所要展现的数据结构形式所展现的,不同的数据结构就需要不同的表格来呈现,所以首先要清楚自己有什么样的数据结构或什么样的展现形式,这样就能理清思路通过Aspose...

lordwish的专栏 2911

VMware ESXi 系统里创建虚拟机,虚拟磁盘日志损坏,如何或者把数据备份?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1641
上一篇: CSS样式 IE6 不兼容问题
下一篇: 程序中得到百度的搜索结果
通者归来
博客等级 码龄25年 18粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值