Word控件Spire.Doc 【Table】教程(6): 在 Word 中合并或拆分表格单元格

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处理,小巧便捷。

Spire.Doc for.NET 最新下载(qun:767755948)icon-default.png?t=MBR7https://www.evget.com/product/3368/download

合并单元格是指将两个或多个单元格组合成一个较大的单元格,而拆分单元格是指将一个单元格分成两个或多个较小的单元格。在 Microsoft Word 中创建或编辑表格时,您可能经常需要合并或拆分表格单元格以更好地呈现数据。在本文中,您将学习如何使用Spire.Doc for .NET在 C# 和 VB.NET 中合并或拆分 Word 文档中的表格单元格

一、安装适用于 .NET 的 Spire.Doc

首先,您需要添加包含在 Spire.Doc for.NET 包中的 DLL 文件作为您的 .NET 项目中的引用。DLL 文件可以从此链接下载或通过NuGet安装。

PM> Install-Package Spire.Doc

二、使用 C# 和 VB.NET 在 Word 中合并表格单元格

在 Microsoft Word 中,您可以将两个或多个相邻的单元格水平或垂直合并为一个更大的单元格。在 Spire.Doc 中,您可以使用Table.ApplyHorizontalMerge()Table.ApplyVerticalMerge()方法实现相同的目的。以下是详细步骤:

  • 初始化Document类的一个实例。
  • 使用Document.LoadFromFile()方法加载 Word 文档。
  • 通过Document.Sections[int]属性通过索引获取文档中的特定部分。
  • 使用Section.AddTable()方法将表格添加到该部分。
  • 使用Table.ResetCells()方法指定表格的行数和列数。
  • 使用Table.ApplyHorizontalMerge()方法水平合并表格中的特定单元格。
  • 使用Table.ApplyVerticalMerge()方法垂直合并表格中的特定单元格。
  • 向表中添加一些数据。
  • 将样式应用于表格。
  • 使用Document.SaveToFile()方法保存结果文档。

【C#】

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

namespace MergeTableCells
{
class Program
{
static void Main(string[] args)
{
//Create a Document instance
Document document = new Document();
//Load a Word document
document.LoadFromFile("Input.docx");

//Get the first section
Section section = document.Sections[0];

//Add a 4 x 4 table to the section
Table table = section.AddTable();
table.ResetCells(4, 4);

//Horizontally merge cells 1, 2, 3, and 4 in the first row
table.ApplyHorizontalMerge(0, 0, 3);
//Vertically merge cells 3 and 4 in the first column
table.ApplyVerticalMerge(0, 2, 3);

//Add some data to the table
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 = "Text";
}
}

//Apply a style to the table
table.ApplyStyle(DefaultTableStyle.LightGridAccent1);

//Save the result document
document.SaveToFile("MergeCells.docx", FileFormat.Docx2013);
}
}
}

【VB.NET】

Imports Spire.Doc
Imports Spire.Doc.Documents

Namespace MergeTableCells
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'Create a Document instance
Dim document As Document = New Document()
'Load a Word document
document.LoadFromFile("Input.docx")

'Get the first section
Dim section As Section = document.Sections(0)

'Add a 4 x 4 table to the section
Dim table As Table = section.AddTable()
table.ResetCells(4, 4)

'Horizontally merge cells 1, 2, 3, and 4 in the first row
table.ApplyHorizontalMerge(0, 0, 3)
'Vertically merge cells 3 and 4 in the first column
table.ApplyVerticalMerge(0, 2, 3)

'Add some data to the table
For row As Integer = 0 To table.Rows.Count - 1
For col As Integer = 0 To table.Rows(row).Cells.Count - 1
Dim cell As TableCell = table(row, col)
cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
Dim paragraph As Paragraph = cell.AddParagraph()
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
paragraph.Text = "Text"
Next
Next

'Apply a style to the table
table.ApplyStyle(DefaultTableStyle.LightGridAccent1)

'Save the result document
document.SaveToFile("MergeCells.docx", FileFormat.Docx2013)
End Sub
End Class
End Namespace

三、使用 C# 和 VB.NET 在 Word 中拆分表格单元格

Spire.Doc for .NET 提供了TableCell.SplitCell()方法,使您能够将 Word 表格中的一个单元格拆分为两个或多个单元格。以下是详细步骤:

  • 初始化Document类的一个实例。
  • 使用Document.LoadFromFile()方法加载 Word 文档。
  • 通过Document.Sections[int]属性通过索引获取文档中的特定部分。
  • 通过Section.Tables[int]属性根据其索引获取节中的特定表。
  • 通过Table.Rows[int].Cells[int]属性获取要拆分的表格单元格。
  • 使用TableCell.SplitCell()方法将单元格拆分为特定数量的列和行。
  • 使用Document.SaveToFile()方法保存结果文档。

【C#】

using Spire.Doc;

namespace SplitTableCells
{
class Program
{
static void Main(string[] args)
{
//Create a Document instance
Document document = new Document();
//Load a Word Document
document.LoadFromFile("MergeCells.docx");

//Get the first section
Section section = document.Sections[0];

//Get the first table in the section
Table table = section.Tables[0] as Table;

//Get the 4th cell in the 4th row
TableCell cell1 = table.Rows[3].Cells[3];
//Split the cell into 2 columns and 2 rows
cell1.SplitCell(2, 2);

//save the result document
document.SaveToFile("SplitCells.docx", FileFormat.Docx2013);
}
}
}

【VB.NET】

Imports Spire.Doc

Namespace SplitTableCells
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'Create a Document instance
Dim document As Document = New Document()
'Load a Word Document
document.LoadFromFile("MergeCells.docx")

'Get the first section
Dim section As Section = document.Sections(0)

'Get the first table in the section
Dim table As Table = TryCast(section.Tables(0), Table)

'Get the 4th cell in the 4th row
Dim cell1 As TableCell = table.Rows(3).Cells(3)
'Split the cell into 2 columns and 2 rows
cell1.SplitCell(2, 2)

'save the result document
document.SaveToFile("SplitCells.docx", FileFormat.Docx2013)
End Sub
End Class
End Namespace

以上便是如何在 Word 中合并或拆分表格单元格,如果您有其他问题也可以继续浏览本系列文章,获取相关教程,你还可以给我留言或者加入我们的官方技术交流群。

FreeSpire.Doc 是一套可以在.NET平台上用于创建和编辑Word文档的库,它不属于.NET框架自带的库,而是第三方的组件。要使用 FreeSpire.Doc 来对单元格进行操作,比如添加对角线,你需要首先获取这个组件的授权,并在你的项目正确引用该库。 以下是一个使用 FreeSpire.Doc单元格添加对角线的示例代码。这个示例代码假设你已经有了FreeSpire.Doc组件的引用,并且已经设置好了环境: ```csharp using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using Spire.Doc.Base; class Program { static void Main(string[] args) { // 创建一个新的Word文档 Document document = new Document(); // 添加一个节 Section section = document.AddSection(); // 在节添加一个表格 Table table = section.AddTable(); // 设置表格列数和行数 table.ResetCells(3, 3); // 遍历表格单元格 for (int i = 0; i < table.Rows.Count; i++) { for (int j = 0; j < table.Columns.Count; j++) { Cell cell = table.Rows[i].Cells[j]; // 设置单元格边框 if (j < table.Columns.Count - 1) // 每个单元格的右侧边框 { cell.Border-bottom = new BorderLine(); } if (i < table.Rows.Count - 1) // 每个单元格的底部边框 { cell.Border-right = new BorderLine(); } // 在需要的单元格添加对角线 if (i == j) { // 在单元格添加一个内嵌的图片,用于表示对角线 InlineShape inlineShape = cell.AddInlinePicture(); System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(10, 10); // 创建一个10x10的位图 Graphics graphics = Graphics.FromImage(bitmap); Pen pen = new Pen(Color.Black, 2); graphics.DrawLine(pen, 0, 0, 10, 10); // 画一条从左上到右下的对角线 // 将位图转换为byte数组 System.IO.MemoryStream ms = new System.IO.MemoryStream(); bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] imageBytes = ms.ToArray(); ms.Close(); // 将byte数组保存为图像 Image image = Image.FromStream(new System.IO.MemoryStream(imageBytes)); inlineShape.Image = image; inlineShape.Width = 200; // 设置图片宽度 inlineShape.Height = 200; // 设置图片高度 inlineShape.VerticalAlignment = VerticalAlignment.Middle; inlineShape.HorizontalAlignment = HorizontalAlignment.Center; } } } // 保存文档 document.SaveToFile("CellDiagonalDown.docx", FileFormat.Docx); } } ``` 请注意,上述代码是一个示例,具体实现时可能需要根据你使用的FreeSpire.Doc的版本和具体API进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值