学习C#调用OpenXml操作word文档的基本用法(39:学习表格类-1)

  word文档中除了文本、图片之外,常用的元素还有表格,openxml中使用Table类创建表格,该类是Word文档中表格相关的核心类,主要用途包括构建表格结构、设置表格级属性、管理表格行为,同时支持嵌套表格以实现复杂布局,其对应document.xml文件内的<w:tbl>元素。

  除了Table类,创建简单表格还涉及的类型主要包括TableRow、TableCell、TableWidth、TableProperties、TableBorders、TableCaption、Paragraph等,构建表格的主要步骤包括:
  1)创建Table类实例对象,代表表格对象;
  2)创建TableProperties对象设置表格全局属性,并添加如TableWidth(宽度)、TableBorders(边框)、TableCaption(标题)等属性;
  3)创建TableRow实例对象代表表格行,向每个TableRow实例对象插入TableCell实例对象代表表格列,同时每个TableCell至少插入一个 Paragraph对象,否则生成的文档可能会损坏;
  4)将Table类实例对象追加到word文档的Body内,保存word文档。

  本文学习使用Table类创建表格并将表格保存到Word文档的基本用法,示例代码如下所示,主要根据指定的行数与列数创建表格,同时设置表格标题、表格边框、表格宽度根据窗口自动调整,代码运行效果如下图所示:

csharp 复制代码
Table table = new Table();
TableProperties tblProp = new TableProperties(
    new TableBorders(
        new TopBorder() { Val = BorderValues.Single, Size = 4 },
        new BottomBorder() { Val = BorderValues.Single, Size = 4 },
        new LeftBorder() { Val = BorderValues.Single, Size = 4 },
        new RightBorder() { Val = BorderValues.Single, Size = 4 },
        new InsideHorizontalBorder() { Val = BorderValues.Single, Size = 4 },
        new InsideVerticalBorder() { Val = BorderValues.Single, Size = 4 }
     ),                        
    new TableCaption() { Val = txtTableTitle.Text },
    new TableWidth { Width = "5000", Type = TableWidthUnitValues.Pct }
);
table.AppendChild(tblProp);

for (int row = 0; row < Convert.ToInt32(nudRow.Value); row++)
{
    TableRow tr = new TableRow();
    for (int col = 0; col < Convert.ToInt32(nudColumn.Value); col++)
    {
        TableCell tc = new TableCell();                            
        tc.Append(new Paragraph(new Run(new Text(""))));
        tr.Append(tc);
    }
    table.Append(tr);
}

body.AppendChild(new Paragraph());
body.Append(table);

参考文献

1https://github.com/dotnet/Open-XML-SDK

2https://learn.microsoft.com/zh-cn/office/open-xml/open-xml-sdk

3https://learn.microsoft.com/zh-cn/dotnet/api/documentformat.openxml.wordprocessing.style?view=openxml-3.0.1

4https://blog.csdn.net/i042416/article/details/126228816

相关推荐
凯丨8 小时前
AI 蠕虫来了:恶意文档如何通过 Copilot for Word 自我传播?
人工智能·c#·copilot
Aaron - Wistron9 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
骊城英雄10 小时前
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
开发语言·ui·c#
吾儿良辰10 小时前
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
开发语言·windows·c#
哎呦喂我去去去11 小时前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#
caishenzhibiao12 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
库拉库拉里12 小时前
Word文档的标题总是自动出现首行缩进怎么办?
c#·word·xhtml
在世修行12 小时前
从零打造 C# 工业视觉检测系统(一):项目全景与架构设计
c#·视觉检测
牡丹雅忻114 小时前
AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践
java·开发语言·c#
脚踏实地皮皮晨14 小时前
002002002_DepandencyObject类2
开发语言·windows·算法·c#·visual studio