将表格添加到Word文档中 ,包括表格样式设置
创建 Table 对象并设置其属性
在您将表格插入文档之前,必须创建 Table 对象并设置其属性。 要设置表格的属性,请创建TableProperties对象并为其提供值。 TableProperties 类提供许多面向表格的属性,例如Shading 、TableBorders 、TableCaption 、TableCellSpacing 、TableJustification 等等。 示例方法包括以下代码。
Table table = new Table();
TableProperties props = new TableProperties(
new TableBorders(
new TopBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new BottomBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new LeftBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new RightBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new InsideHorizontalBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new InsideVerticalBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
}));
table.AppendChild<TableProperties>(props);
TableProperties 类的构造函数允许您指定任意数量的子元素(与 XElement 构造函数很像)。
本例中,代码创建TopBorder 、BottomBorder 、LeftBorder 、RightBorder 、InsideHorizontalBorder 和InsideVerticalBorder 子元素,各子元素分别描述表格一个的边框元素。 对于每个元素,代码在调用构造函数的过程中设置 Val 和 Size 属性。 大小的设置很简单,但是 Val 属性的设置则复杂一点:此特定对象的这个属性表示边框样式,您必须将其设置为枚举值。 为此,请创建 EnumValue 泛型类型的实例,将特定边框类型(Single )作为参数传递给构造函数。< >一旦代码已设置它需要设置的所有表格边框值,它将调用 AppendChild<T> 方法的表,指示泛型类型是 TableProperties— 即使用变量 属性 作为值追加 TableProperties 类的实例。
使用数据填充表
有了表格及其属性后,现在应该使用数据填充表格。示例过程首先循环访问您指定的字符串数组中的所有数据行,并为每个数据行创建一个新的 TableRow 实例。下面的代码省去了使用数据填充行的细节,但是演示了如何创建行并将行附加到表格中:
创建11行
for (var i = ; i <=; i++)
{
var tr = new TableRow();
// Code removed here…
table.Append(tr);
}
对于每一列,代码创建一个新的 TableCell 对象,并使用数据填充,然后将其附加到行。下面的代码省去了使用数据填充每个单元格的细节,但是演示了如何创建列并将列附加到表格中:
创建11列
for (var j = ; j <= ; j++)
{
var tc = new TableCell();
// Code removed here…
tr.Append(tc);
}
接下来,代码执行以下操作:
新建一个包含字符串中的值的 Text 对象。
将 Text 对象传递给新Run 对象的构造函数。
将 Run 对象传递给Paragraph 对象的构造函数。
将 Paragraph 对象传递给单元格的Append 方法。
换句话说,下面的代码将文本附加到新的 TableCell 对象。
tc.Append(new Paragraph(new Run(new Text("数据")));
代码然后将新的 TableCellProperties 对象附加到单元格。 与见过的 TableProperties 对象一样,此 TableCellProperties 对象的构造函数可以接受您提供的任意数量的对象。在本例中,代码仅传递了一个新的TableCellWidth 对象,并将其Type 属性设置为Auto (以便表格自动调整每列的宽度)。
// Assume you want columns that are automatically sized.
tc.Append(new TableCellProperties(
new TableCellWidth { Type = TableWidthUnitValues.Auto }));
完成
下面的代码最后会将表格附加到文档正文,然后保存该文档。
doc.Body.Append(table);
doc.Save();
示例代码
// Take the data from a two-dimensional array and build a table at the
// end of the supplied document.
public static void AddTable(string fileName, string[,] data)
{
using (var document = WordprocessingDocument.Open(fileName, true))
{ var doc = document.MainDocumentPart.Document; Table table = new Table(); TableProperties props = new TableProperties(
new TableBorders(
new TopBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new BottomBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new LeftBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new RightBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new InsideHorizontalBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
},
new InsideVerticalBorder
{
Val = new EnumValue<BorderValues>(BorderValues.Single),
Size =
})); table.AppendChild<TableProperties>(props); for (var i = ; i <= data.GetUpperBound(); i++)
{
var tr = new TableRow();
for (var j = ; j <= data.GetUpperBound(); j++)
{
var tc = new TableCell();
tc.Append(new Paragraph(new Run(new Text(data[i, j])))); // Assume you want columns that are automatically sized.
tc.Append(new TableCellProperties(
new TableCellWidth { Type = TableWidthUnitValues.Auto })); tr.Append(tc);
}
table.Append(tr);
}
doc.Body.Append(table);
doc.Save();
}
}
将表格添加到Word文档中 ,包括表格样式设置的更多相关文章
- C# 在word文档中复制表格并粘帖到下一页中
C# 在word文档中复制表格并粘帖到下一页中 object oMissing = System.Reflection.Missing.Value; Microsoft.Offi ...
- 使用Java POI来选择提取Word文档中的表格信息
通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...
- 2018-10-04 [日常]用Python读取word文档中的表格并比较
最近想对某些word文档(docx)的表格内容作比较, 于是找了一下相关工具. 参考Automate the Boring Stuff with Python中的word部分, 试用了python-d ...
- [java 2019-04-09] 代码生成word文档中的表格嵌套问题
public static void createContent3(Date adtStart, Date adtEnd, Map<String, Object> aMap,Map< ...
- 处理Word文档中所有修订
打开现有文档进行编辑 若要打开现有文档,您可以将 Word类实例化,如以下 using 语句所示. 为此,您可以使用Open(String, Boolean) 方法打开具有指定 fileName 的字 ...
- Aspose.Words:如何添加另一个WORD文档中的Node对象
原文:Aspose.Words:如何添加另一个WORD文档中的Node对象 首先看一段代码,这段代码意图从docSource中获取第一个表格,并插入docTarget的末尾: , true); doc ...
- 向Docx4j生成的word文档中添加布局--第二部分
原文标题:Adding layout to your Docx4j-generated word documents, part 2 原文链接:http://blog.iprofs.nl/2012/1 ...
- 如何在word文档中添加mathtype加载项
MathType是强大的数学公式编辑器,通常与office一起使用,mathtype安装完成后,正常情况下会在word文档中的菜单中自动添加mathtype加载项,但有时也会出现小意外,mathtyp ...
- 利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等
前言: 前两篇博客介绍了 Python 的 docx 模块对 Word 文档的写操作,这篇博客将介绍如何用 docx 模块读取已有 Word 文档中的信息. 本篇博客主要内容有: 1.获取文档的章节信 ...
随机推荐
- linux下面重启nfs报错:nfs-server.service:main process exited
linux下面重启nfs报错:nfs-server.service:main process exited [root@dhcp-66-83-39 images]# service rpcbind s ...
- Redis主从集群及哨兵模式
本次实验环境准备用一台服务器模拟3台redis服务器,1主2从 主从集群搭建 第一步:安装Redis 安装Redis,参考前面安装Redis文章,保证单机使用没有问题. 第二步:配置服务器文件 定位到 ...
- Cordova与现有框架的结合,Cordova插件使用教程,Cordova自定义插件,框架集成Cordova,将Cordova集成到现有框架中
一.框架集成cordova 将cordova集成到现有框架中 一般cordova工程是通过CMD命令来创建一个工程并添加Android.ios等平台,这样的创建方式可以完整的下载开发过程中所需要的的插 ...
- 音视频处理概要 markdown
最近要想办法把录制的音视频进行拼接. 比方说此次录制的视频有三段,通过高清直播编码器录制,录制下的标准为h.264 直接用ffmpeg简单拼接,音频会丢失,所以有了此次解决方案(有可能会繁琐,简单方案 ...
- JS 通过 navigator获取判断浏览器信息
获取浏览器信息需要使用navigator.userAgent 对象 根据获取到的内容判断浏览器信息 亲身测试 navigator.userAgent IE 11 Mozilla/5.0 (Windo ...
- idea激活方式
idea破解方法:转自https://note.youdao.com/ynoteshare1/index.html?id=d0f3fb42bfa1bb65a33115a1b6140f5f&ty ...
- C++中为什么有时要使用extern "C"
extern "C"的作用 在C++引用lua的头文件时,我们总会写成: extern "C" { #include "lua.h" #in ...
- scrapy爬取58同城二手房问题与对策
测试环境: win10,单机爬取,scrapy1.5.0,python3.6.4,mongodb,Robo 3T 其他准备: 代理池:测试环境就没有用搭建的flask抓代理,因为我找到的几个免费网站有 ...
- Java 数据类型与运算符
JAVA数据类型分基本(内置)数据类型和引用数据类型. 区别: 基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上. 引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存 ...
- kubernetes 常见问题整理
使用kubectl 命令是报错 报错: [root@k8s-master ~]# kubectl get pod The connection to the server localhost: was ...