Word模板中的表格处理
在软件系统中,我们经常要输出一些word ,excel,ppt文档,为了输出结果漂亮美观、输出操作方便快捷,通常要制作一些模板文件,通过对模板文件中的关键信息进行修改,就不用管排版、格式等处理了。
在word中,使用非常多的就是书签,替换书签的内容,从而达到快速高效的产出目的。而有人觉得word用书签处理不了表格,于是,我就不信,来测试了一下。
主要目的
如下表格,每一次产出都要得到如下格式的表格,每次红线内的内容不一样,并且需要计算出合计项。
在模板文件中设计的表格如下,表头、首列及合计单元格的样式不同与其他单元格,表格已插入了一个书签,便于查找操作;而且表格数据行有5行(表一共有7行),而实际的数据可能是5行,也可能小于5行(不能高于5行,因为word中只给定了有限的空间位置)
实现步骤
1.在word中最大限度的设计好表格的样式、位置、大小及单元格的字体、风格样式等,保存为模板文件;
2.从数据库中查询数据为datatable,并将列名增加到首行,成为第一列(word中表格的表头);
3.根据书签读取表格;
4.将datatable写入表格;
5.删除空白行;
6.查询是否有合计行,如果有计算合计。
相关代码
这里使用的第三方组件,Aspose.Words。相关操作代码如下:
打开word
- Document doc = new Document(txtDocPath.Text.Trim());
根据书签读取表格
- Bookmark bm = doc.Range.Bookmarks["书签名"];
- table = (Table)bm.BookmarkStart.GetAncestor(NodeType.Table);
读取所有表格
- //读取所有表格
- NodeCollection tables = doc.GetChildNodes(NodeType.Table, true);
- for (int i = 0; i < tables.Count; i++)
- {
- Table table = (Table)doc.GetChild(NodeType.Table, i, true);
- }
遍历书签
- //读取所有书签
- BookmarkCollection bmCollection = doc.Range.Bookmarks;
- for (int i = 0; i < bmCollection.Count; i++)
- {
- Console.WriteLine(bmCollection[i].Name+@":"+bmCollection[i].Text);
- }
遍历表格
- //遍历行列
- foreach (Row row in table.Rows)
- {
- int rowIndex = table.Rows.IndexOf(row);
- foreach (Cell cell in row.Cells)
- {
- Console.WriteLine(cell.ToString());
- }
- }
更新表格内容
- DocumentBuilder builder= new DocumentBuilder(doc);
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- builder.MoveTo(table.Rows[i].Cells[j].FirstParagraph);
- builder.Write(dt.Rows[i][j].ToString());
- }
- }
保存word
- doc.Save(txtDocPath.Text.Trim());
注意事项
去CSDN去下载破解版本的,如果未破解,将会出现红色版权标记。
参考链接
https://forum.aspose.com/t/how-to-find-a-table-present-in-word-document-using-aspose-word/46159
https://forum.aspose.com/t/fill-table-in-word/52564/2
https://docs.aspose.com/dashboard.action
https://github.com/asposemarketplace/Aspose_for_OpenXML/wiki/Change-text-in-a-table
https://forum.aspose.com/t/replace-text-in-table-cell-but-keep-existing-text-format/47251/11
Word模板中的表格处理的更多相关文章
- 将excel中的数据填入word模板中-VBA
首先将word模板中需要填写excel中数据的空白处用自己独特的字符串标记,比如 数据001 什么的.如下图: 这样,就可以用vba搜寻这些自己独特的标记来根据excel内容填充word了. 第 ...
- POI往word模板中写入数据
转: POI往word模板中写入数据 2018年03月24日 16:00:22 乄阿斗同學 阅读数:2977 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn ...
- 向Word模板中填充数据
现在有这样的需求,给Word文档的指定位置填充上特定数据,例如我们有一个终端,用来打印员工的薪资证明,对于一个公司来说,他的薪资证明模板是固定的,变化的地方是员工姓名,部门,职位等.我们只需要将这些指 ...
- [转载]java向word模板中填充数据(总结)
使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区 ...
- [原创]java向word模板中填充数据(总结)
使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区 ...
- PPT模板中的”书签”
引言 在项目中生成文档报告经常需要word中,其中的关键就是书签,通过定位和替换书签中的值来达到生成定制的报告(详见Word模板中的表格处理):但在PPT中却没有书签这个概念,所以,不能采用这种方式. ...
- 从一个word文件中读取所有的表格和标题(1)
首先讲需求: 从word文件中读表格里的数据,然后插入数据库中.word文件中的表格是带有标题的,把标题读出来,进行匹配数据库. 需求分析: word2007底层是以xml文件存储的,所以分析xml的 ...
- Open Xml SDK Word模板开发最佳实践(Best Practice)
1.概述 由于前面的引文已经对Open Xml SDK做了一个简要的介绍. 这次来点实际的——Word模板操作. 从本质上来讲,本文的操作都是基于模板替换思想的,即,我们通过替换Word模板中指定元素 ...
- .net core 使用NPOI填充Word模板导出Word
最近工作用到在Word模板插入数据库数据,导出一个带数据的Word文件,想起来之前操作Word都是用微软提供的Microsoft.Office.Interop.Word,而在最新的..NET CORE ...
随机推荐
- 在ASP.NET MVC下限制同一个IP地址单位时间间隔内的请求次数
有时候,当用户请求一个Controller下的Action,我们希望,在单位时间间隔内,比如每秒,每分钟,每小时,每天,每星期,限制同一个IP地址对某个Action的请求次数.如何做呢? stefan ...
- FTP服务器原理(转)
本文转自https://www.cnblogs.com/Aiapple/p/5955736.html 感谢作者 21.1 FTP服务器原理 使用明码传输方式,且有相当多的安全危机历史.因此一般 ...
- 使用断言NSAssert()调试程序错误
NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并切可以自定义异 ...
- Lua date转秒数
之前写过一篇关于把秒转换成指定的日期格式 Lua date format 接到一个需求,需要从配置文件中读取活动显示时间段:startDate ~ endDate(格式为:yyyy-mm-dd H ...
- jquery入门 改动网页背景颜色
我们在浏览一些站点,尤其是一些小说站点的时候,都会有改动页面背景颜色的地方,这个功能使用jquery非常easy实现. 效果图: show you code: <!doctype html> ...
- Nvidia驱动正确安装过程
找到适合的正确的驱动 去nvidia驱动官网下载 卸载掉原有驱动 sudo apt-get remove –purge nvidia* 安装驱动 进入命令行界面 Ctrl-Alt+F1 给驱动run文 ...
- 无需SherlockActionbar的SlidingMenu使用详解(一)——通过SlidingMenu设置容器并解决滑动卡顿的问题
想必很多人都听过这个开源框架,一年前真的是风靡一时.只是它的配置较为繁琐,还需要sherlockActionbar的支持,我这里下载了最新的开源库,并且在实际用套用了AppCompat的官方库,这样就 ...
- Shape 各种属性详解
本文来自:http://blog.csdn.net/brokge/article/details/9713041 简介: 作用:XML中定义的几何形状 位置:res/drawable/文件的名称.xm ...
- Log stash学习笔记(一)
Logstash是一款开源的数据收集引擎,具备实时管道处理能力.简单来说,logstash作为数据源与数据存储分析工具之间的桥梁,结合 ElasticSearch以及Kibana,能够极大方便数据的处 ...
- 【.Net】 C#访问修饰符
一 类的修饰符: C#中类的默认修饰符是internal.1 private 只有对包.NET中的应用程序或库才能访问.2 public 不限制对类的访问. 3 protected 只可以被本类和其 ...