创建 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文档中 ,包括表格样式设置的更多相关文章

  1. C# 在word文档中复制表格并粘帖到下一页中

    C# 在word文档中复制表格并粘帖到下一页中 object oMissing = System.Reflection.Missing.Value;            Microsoft.Offi ...

  2. 使用Java POI来选择提取Word文档中的表格信息

    通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...

  3. 2018-10-04 [日常]用Python读取word文档中的表格并比较

    最近想对某些word文档(docx)的表格内容作比较, 于是找了一下相关工具. 参考Automate the Boring Stuff with Python中的word部分, 试用了python-d ...

  4. [java 2019-04-09] 代码生成word文档中的表格嵌套问题

    public static void createContent3(Date adtStart, Date adtEnd, Map<String, Object> aMap,Map< ...

  5. 处理Word文档中所有修订

    打开现有文档进行编辑 若要打开现有文档,您可以将 Word类实例化,如以下 using 语句所示. 为此,您可以使用Open(String, Boolean) 方法打开具有指定 fileName 的字 ...

  6. Aspose.Words:如何添加另一个WORD文档中的Node对象

    原文:Aspose.Words:如何添加另一个WORD文档中的Node对象 首先看一段代码,这段代码意图从docSource中获取第一个表格,并插入docTarget的末尾: , true); doc ...

  7. 向Docx4j生成的word文档中添加布局--第二部分

    原文标题:Adding layout to your Docx4j-generated word documents, part 2 原文链接:http://blog.iprofs.nl/2012/1 ...

  8. 如何在word文档中添加mathtype加载项

    MathType是强大的数学公式编辑器,通常与office一起使用,mathtype安装完成后,正常情况下会在word文档中的菜单中自动添加mathtype加载项,但有时也会出现小意外,mathtyp ...

  9. 利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等

    前言: 前两篇博客介绍了 Python 的 docx 模块对 Word 文档的写操作,这篇博客将介绍如何用 docx 模块读取已有 Word 文档中的信息. 本篇博客主要内容有: 1.获取文档的章节信 ...

随机推荐

  1. angular1时间控件之时间比较大小,比如入住日期和离店日期,入住不能晚于离店时间

    功能可能是大家有时遇到的,不过angluar1现在用的人很少了,希望帮上和我一样掉坑里的朋友吧,之前自己也在网上找过几乎没找到angluar1和我代码需求一样的控件,没办法自己造 了,看代码图 就差不 ...

  2. 一个简单的struts2上传图片的例子

    https://www.cnblogs.com/yeqrblog/p/4398914.html 在我的大创项目中有对应的应用

  3. jmeter入门案例(二)

    jmeter入门简介(一)下载及元件介绍https://www.cnblogs.com/wish5714/p/9714930.html jmeter典型的http请求示例 业务场景 银行卡收单交易,模 ...

  4. DataTable序列化

    DataTable是复杂对象,无法直接序列化,必须通过其他的方式来实现 下面介绍一下常用的几种方式 1.先转换为List,再序列化List 下面是DataTable转换为List的方法 protect ...

  5. 《CSAPP》读书笔记

    第一章 第二章 第三章 第四章 第五章 第六章 第七章 链接 可重定位目标文件 符号和符号表 符号解析 第八章 第九章 虚拟存储器 虚拟存储器 页表.页命中.缺页 地址翻译 第十章 第十一章 第十二章 ...

  6. freeswitch dialplan 基础

    freeswitch dialplan 基础 一.基础概念 dialplan 拨号方案 context 拨号表(块) extension  拨号去向 action  (拨号后执行的)动作 condit ...

  7. snmp监控f5

    1.硬盘各分区使用情况 2.pool数量.vs数量 3.cpu使用率 4.内存使用率 5.电源 6.风扇 7.端口状态及流量 8.HA状态(主备情况及HA是否处于建立状态) 9.主备机同步状态

  8. Echart遇到的问题:tooltip提示框大小异常

    将Echart图表放到项目中,发现当鼠标放到柱状图上时,提示框显示大小超出了div的大小. 官方的文档对于tooltip的说明也没有指出:如何修改大小. 那么tooltip是什么呢? fn+f12打开 ...

  9. django2.0解决跨域问题

    跨域问题一:(cors跨域问题) 解决方法: 1.安装 django-cors-headers 2.修改 setting.py INSTALLED_APPS = [ ... 'corsheaders' ...

  10. 输入ip和端口号python脚本py文件

    1.利用.py文件进行打开URL,编辑以下文件代码保存文件为login.py: # _*_ coding: cp936 _*__all_ = ['ip','port','root_id']ip='10 ...