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

1
Document doc =  new  Document(txtDocPath.Text.Trim());

 

根据书签读取表格

1
2
Bookmark bm = doc.Range.Bookmarks[ "书签名" ];
table = (Table)bm.BookmarkStart.GetAncestor(NodeType.Table);

 

读取所有表格

1
2
3
4
5
6
//读取所有表格
NodeCollection tables = doc.GetChildNodes(NodeType.Table,  true );
for  ( int  i = 0; i < tables.Count; i++)
{
     Table table = (Table)doc.GetChild(NodeType.Table, i,  true );
}

 

遍历书签

1
2
3
4
5
6
//读取所有书签
BookmarkCollection bmCollection = doc.Range.Bookmarks;
for  ( int  i = 0; i < bmCollection.Count; i++)
{
     Console.WriteLine(bmCollection[i].Name+ @":" +bmCollection[i].Text);
}

 

遍历表格

1
2
3
4
5
6
7
8
9
//遍历行列
foreach  (Row row  in  table.Rows)
{
     int  rowIndex = table.Rows.IndexOf(row);
     foreach  (Cell cell  in  row.Cells)
     {
         Console.WriteLine(cell.ToString());
     }
}

 

更新表格内容

1
2
3
4
5
6
7
8
9
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

1
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










本文转自我也是个傻瓜51CTO博客,原文链接:http://www.cnblogs.com/liweis/p/7195013.html ,如需转载请自行联系原作者




相关文章
利用Spire实现对Word模板的指定文字替换(文字、图片、表格)
利用Spire实现对Word模板的指定文字替换(文字、图片、表格)
178 0
将excel文件中的内容转换成word文本(去表格)
将excel文件中的内容转换成word文本(去表格)
530 0
将excel文件中的内容转换成word文本(去表格)
|
XML 数据格式
使用freemarker模板导出word文档
使用freemarker模板导出word文档
457 0
使用freemarker模板导出word文档
向Word模板中填充数据
原文:向Word模板中填充数据 现在有这样的需求,给Word文档的指定位置填充上特定数据,例如我们有一个终端,用来打印员工的薪资证明,对于一个公司来说,他的薪资证明模板是固定的,变化的地方是员工姓名,部门,职位等。
1238 0
|
C# 搜索推荐
C# 在Word中添加表格的方法
表格是组织整理数据的一种重要手段,应在生活中的方方面面。在Word文档中将繁杂的文字表述内容表格化,能快速、直接地获取关键内容信息。那么,通过C#,我们也可以在Word文档中添加表格,这里将介绍两种不同的表格添加方法。
1065 0