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 ...
随机推荐
- Win10正式版开机慢怎么办 开机黑屏时间长怎么办
升级Win10正式版后开机速度慢.黑屏时间长怎么解决呢?其实我重要是由Win10正式版所提供的“快速启动”功能与电脑显卡驱动.电源管理驱动不兼容所造成的.下面就与大家分享一下针对Win10正式版开机速 ...
- lodash用法系列(5),链式
Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能. 官网:https://lodash.com/引用:<script src="//cdnjs.clou ...
- 在ASP.NET MVC中使用Knockout实践02,组合View Model成员、Select绑定、通过构造器创建View Model,扩展View Model方法
本篇体验使用ko.computed(fn)计算.组合View Model成员.Select元素的绑定.使用构造器创建View Model.通过View Model的原型(Prototype)为View ...
- error CS0234: 命名空间“XXX”中不存在类型或命名空间名称“UserInfoVm”(是否缺少程序集引用?)
□ 背景 UserInfoVm是在MVC的Models文件夹中的一个view model,这个view model是某部分视图的的页面Model.当加载这个部分视图的时候报了错. □ 思考 UserI ...
- CoreTelephony.framework 引入程序方法
#import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <CoreTelephony/CTCarrier.h> 参考: ...
- excel 鼠标上下左右移动
.Offset用法:(如果是多选单元格,偏移后选定的依然是区域) Selection.Offset(-1).select 'up Selection.Offset(1).select 'down ...
- WordPress基础:在浏览站点时顶部显示工具栏显示隐藏
然后在底部加入: <?php wp_footer();?>
- 关于unity里pbr技术和材质 unity5默认shader和传统的对比
刚开始也不知道什么是pbr (Physically Based Rendering)后来才发现这是一种新的渲染方式 与之对应的是材质是pbs(Physically Based Shader) unit ...
- SharePoint Set-SPUser 命令拒绝访问
· 前言 最近碰到一个问题,由于User Profile Service服务有问题,用户信息无法更新.所以,想到Set-SPUser命令可以更新,于是乎找到这个命令,但是更新的时候发现拒绝访问的错误. ...
- 用开源项目JazzyViewPager实现ViewPager切换动画
JazzyViewPager这个项目可以让viewpager有各种绚丽的动画,而且还可以自由扩展.但从官网下载的lib导入时会出现找不到视图的问题,不知道是不是我人品不行,所以我就自己写了lib.总之 ...