C#使用Spire.Doc实现Word表格单元格的拆分与合并

Aria
Aria
发布时间:2026-10-15 | 4人浏览过
原创

在使用C#开发涉及Word文档处理的应用程序时,经常需要对复杂表格进行结构调整,如合并或拆分单元格。本文将介绍如何使用第三方库Free Spire.Doc for .NET来实现这些功能,并提供具体的代码实现步骤。

准备工作

在开始编写代码之前,需要在项目中引入 Free Spire.Doc 库。可以通过以下两种方式进行安装:

  • 方法一:手动添加引用
    下载并安装 Free Spire.Doc for .NET,找到安装目录下 BIN 文件夹中的 Spire.Doc.dll,在 Visual Studio 的“解决方案资源管理器”中右键点击“引用”,选择“添加引用”并导入该 DLL 文件。
  • 方法二:使用 NuGet 包管理
    在 Visual Studio 的“解决方案资源管理器”中右键点击“引用”,选择“管理NuGet包”,搜索 FreeSpire.Doc 进行安装;或者直接在“程序包管理器控制台”中输入以下命令:
    Install-Package FreeSpire.Doc -Version 10.8.0

第1步:初始化文档对象

首先,创建一个 Document 类的实例,用于加载现有的 Word 文档。这是所有后续操作的基础入口。

第2步:获取目标表格

通过 Document.Sections[0] 属性获取文档的第一个节(Section),然后使用 AddTable() 创建新表或使用 Tables[0] 获取已有表格。这一步明确了操作的对象范围。

第3步:设置表格结构参数

如果是新建表格,需调用 Table.ResetCells(行数, 列数) 定义表格的基本行列尺寸;如果是操作现有表格,则直接定位到具体的行和列索引。

实现Word表格单元格合并

合并单元格适用于需要跨越多个行列显示的表头或特殊数据区域。Spire.Doc 提供了两个核心 API:

  • ApplyHorizontalMerge(row, colStart, colEnd):在同一行内,从 colStart 到 colEnd 的单元格。
  • ApplyVerticalMerge(rowStart, col, rowEnd):在同一列内,从 rowStart 到 rowEnd 的单元格。

C#代码示例

以下代码演示了如何构建一个 4x4 的表格,并对特定区域进行水平和垂直合并:

using Spire.Doc;
using Spire.Doc.Documents;

namespace MergeTableCells
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 初始化 Document
            Document document = new Document();
            document.LoadFromFile("测试文档.docx");

            // 2. 获取第一个节并添加表格
            Section section = document.Sections[0];
            Table table = section.AddTable();
            table.ResetCells(4, 4);

            // 3. 执行合并操作
            // 水平合并第0行的第0列到第3列
            table.ApplyHorizontalMerge(0, 0, 3);
            // 垂直合并第2列的第0行到第3行
            table.ApplyVerticalMerge(0, 2, 3);

            // 4. 填充内容与样式
            for (int row = 0; row < table.Rows.Count; row++)
            {
                for (int col = 0; col < table.Rows[row].Cells.Count; col++)
                {
                    TableCell cell = table[row, col];
                    cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle;
                    Paragraph paragraph = cell.AddParagraph();
                    paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center;
                    paragraph.Text = "文本";
                }
            }
            table.ApplyStyle(DefaultTableStyle.LightGridAccent1);

            // 5. 保存结果
            document.SaveToFile("合并单元格.docx", FileFormat.Docx2013);
        }
    }
}

上述操作完成后,生成的 Word 文档中将出现跨行和跨列的合并单元格结构,适用于制作复杂报表或简历模板。

实现Word表格单元格拆分

当原始表格需要更细致的数据划分时,可以使用 SplitCell 方法将单个单元格拆分为多行多列的子单元格。

关键API

TableCell.SplitCell(int rows, int cols):指定当前单元格向下扩展的行数和向右扩展的列数。

C#代码示例

以下代码读取已存在的表格,选中第三行第四列的单元格,并将其拆分为 2 行 2 列:

using Spire.Doc;

namespace SplitTableCells
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 加载已有包含表格的文档
            Document document = new Document();
            document.LoadFromFile("合并单元格.docx");

            // 2. 定位到第一个节下的第一个表格
            Section section = document.Sections[0];
            Table table = section.Tables[0] as Table;

            // 3. 获取要拆分的单元格 (行索引3, 列索引3)
            TableCell cell = table.Rows[3].Cells[3];

            // 4. 执行拆分:拆分为 2 行 2 列
            cell.SplitCell(2, 2);

            // 5. 保存结果
            document.SaveToFile("拆分单元格.docx", FileFormat.Docx2013);
        }
    }
}

执行此代码后,指定的单元格将被逻辑分割为四个小单元格,原有的居中内容可能会根据布局策略进行调整。注意,拆分操作会改变原有表格的结构索引,建议在修改前备份原文件或记录好相关坐标。

总结

通过 Free Spire.Doc 提供的丰富 API,开发者可以灵活地在 C# 环境中对 Word 表格进行复杂的格式化操作。无论是简单的水平/垂直合并还是动态拆分,都能高效实现自动化文档生成。以上就是C#实现拆分合并Word表格中的单元格的详细内容,更多关于C# Spire.Doc表格处理技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表