Word模板中的表格处理

简介: 在软件系统中,我们经常要输出一些word ,excel,ppt文档,为了输出结果漂亮美观、输出操作方便快捷,通常要制作一些模板文件,通过对模板文件中的关键信息进行修改,就不用管排版、格式等处理了。 在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://docs.aspose.com/display/wordsnet/Introduction+and+Creating+Tables#IntroductionandCreatingTables-InsertingaCloneofanExistingTable

https://forum.aspose.com/t/replace-text-in-table-cell-but-keep-existing-text-format/47251/11

目录
相关文章
|
机器学习/深度学习 算法 数据挖掘
统计学与Python:实现描述性统计和推断性统计分析
【4月更文挑战第12天】本文介绍了Python在统计学中的应用,重点讲解了如何使用Python进行描述性与推断性统计分析。Pandas和NumPy库用于描述性统计,提供数据概括和总结功能;Scipy和Statsmodels库支持推断性统计,包括假设检验和模型建立。通过数据导入、描述性统计量计算、图表绘制以及假设检验和回归分析等步骤,展示了Python实现统计分析的基本流程。持续学习和实践将有助于提升Python统计分析能力。
805 0
|
7月前
|
JSON 监控 API
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
12月前
|
设计模式 开发者 Python
Python类里引用其他类
Python类里引用其他类
135 4
|
数据安全/隐私保护
【Axure教程】通用权限管理原型(上)
【Axure教程】通用权限管理原型
【Axure教程】通用权限管理原型(上)
|
SQL 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的三重奏
在数字时代的交响乐中,网络安全和信息安全是不可或缺的乐章。本文将探索网络空间的脆弱性,揭示安全漏洞的存在与影响;深入探讨加密技术的原理和应用,如何在保护数据隐私的同时抵御黑客攻击;并强调安全意识的重要性,分析如何通过教育和实践提升个人和组织的防护能力。这三个要素相互交织,共同维护着网络世界的和谐与安全。
110 31
|
存储 数据采集 机器学习/深度学习
知识管理:从文档到数据的技术之旅
【6月更文挑战第25天】知识管理正由文档转向数据,克服传统方式如信息碎片化和检索效率低下的问题。借助大数据和AI,实现知识体系化、智能检索和数据价值挖掘。技术路径涉及数据采集、存储、挖掘、分析及可视化。未来,知识图谱、智能问答系统和个性化推荐将推动知识管理进一步发展,提升企业竞争力。
|
SQL Java 数据库连接
使用Hibernate进行数据库持久化操作
【4月更文挑战第15天】Hibernate 是一款开源 ORM 框架,简化数据库操作,通过映射将 Java 对象与表交互。核心接口包括 SessionFactory、Session、Transaction、Query 和 Criteria。使用 Hibernate 需添加依赖,配置 hibernate.cfg.xml 文件,设置数据库信息,并创建实体类及映射文件。
196 0
|
机器学习/深度学习 存储 算法
特征向量(Eigenvector)
特征向量(Eigenvector)是在线性代数中与矩阵相对应的非零向量,其在矩阵乘法下只发生伸缩变化而不改变方向。特征向量与特征值(Eigenvalue)是成对出现的,特征值表示特征向量的伸缩因子。
629 1
|
Java 开发工具 Android开发
[Android AIDL] --- AIDL原理简析
[Android AIDL] --- AIDL原理简析
363 0