用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

Windows 11 的C盘User(用户)文件夹下的用户文件夹名称的修改

背景介绍:由于系统重装导致Windows 11的系统用户名与C盘User(用户)文件夹下的用户名文件夹(公用文件夹旁边的文件夹)出现名称不一致,事例中系统用户名命名为“寂萧”,User(用户)文件夹下的文件夹名称却是“77555”。【QQ邮箱前五位真的真的看着很别扭】注:改名有风险,三思而后行。User(用户)文件夹下的用户名是中文在某些软件的应用场景下产生不便,导致很多软件莫名其妙报错,甚至无法使用,笔者不建议修改为中文名。//和笔者一样的强迫症除外//

2302_79084172的博客 10万+

推荐.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

NFT图片批量合成及稀有度计算工具

一、制作背景 -当前NFT作品制作的大多方式都是使用部件拼接的形式,然后从大量的可能性结果取优; 二、解决问题 拼接合成的组合数量十分巨大,手工合成费时费力; 合成中对各个部件的使用次数不容易控制,部位出现的概率对作品的稀有度及评分影响较大; 对于生成的作品各个部位的信息(包括来源和使用率)统计繁琐,不利于对作品的介绍中体现; 三、程序功能介绍 1、功能自定义部位稀有度批量合成NFT作品 步骤一:创建各个合成部件文件夹,将图片放到文件夹内 步骤二:软件上设置各个部件对于的图片文件夹及出现的概率 步骤二

Keeping111的博客 4638

工控安全政策系列导读:国际标准IEC 62443标准系列

IEC 62443由ANSI/ISA提出,被ISO/IEC采纳,所以该标准会以不同的名字出现,包括:ANSI/ISA-99,ISA-99,ISA 62443,ISO/IEC 62443,ISO 62443,IEC 62443。其中IEC 62443-2-1已等同采纳为国标,于2016年10月发布,标准编号为GB/T 33007。 IEC 62443是在国...

weixin_34132768的博客 2623

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

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

lordwish的专栏 2911

逆向实战:360加固DEX解密全流程解析(附Frida脚本与SoFixer修复技巧)

本文深入解析360加固DEX解密的全流程,涵盖动态Hook技术、Frida脚本应用及SoFixer修复技巧。通过实战案例详细展示如何识别加固特征、定位关键函数、实现ELF文件修复,并解析RC4和zlib解密算法,为逆向工程师提供全面的技术指导。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值