在Word文档中,表格可以帮助我们清晰、直观的分析和整理数据。一个表格通常至少包含一行,每行至少包含一个单元格,一个单元格可以包含多种元素如文本和表格(即嵌套表格)等。本文将介绍如何使用Spire.Doc在Word文档中创建表格和嵌套表格。
在创建表格时,我们可以预先指定好表格的行数和列数,也可以通过动态的方式向表格中添加行和单元格。
创建预定义行数和列数的表格
我们可以通过Table.ResetCells(int rowsNum, int columnsNum)方法来创建一个预先定义好行数和列数的表格。代码示例:
C#
//创建Word文档
Document document = new Document();
//添加section
Section section = document.AddSection();
//添加表格
Table table = section.AddTable(true);
//指定表格的行数和列数(2行,3列)
table.ResetCells(2, 3);
//获取单元格(第1行第1个单元格)并添加文本
TextRange range = table[0, 0].AddParagraph().AppendText("产品");
range.CharacterFormat.FontName = "Arial";
range.CharacterFormat.FontSize = 12;
range.CharacterFormat.TextColor = Color.Teal;
range.CharacterFormat.Bold = true;
//获取单元格(第1行第2个单元格)并添加文本
range = table[0, 1].AddParagraph().AppendText("单价");
range.CharacterFormat.FontName = "Arial";
range.CharacterFormat.FontSize = 12;
range.CharacterFormat.TextColor = Color.Teal;
range.CharacterFormat.Bold = true;
//获取单元格(第1行第3个单元格)并添加文本
range = table[0, 2].AddParagraph().AppendText("数量");
range.CharacterFormat.FontName = "Arial";
range.CharacterFormat.FontSize = 12;
range.CharacterFormat.TextColor = Color.Teal;
range.CharacterFormat.Bold = true;
//获取单元格(第2行第1个单元格)并添加文本
range = table[1, 0].AddParagraph().AppendText("A");
range.CharacterFormat.FontName = "Arial";
range.CharacterFormat.FontSize = 10;
//获取单元格(第2行第2个单元格)并添加文本
range = table[1, 1].AddParagraph().AppendText("¥1800");
range.CharacterFormat.FontName = "Arial";
range.CharacterFormat.FontSize = 10;
//获取单元格(第2行第3个单元格)并添加文本
range = table[1, 2].AddParagraph().AppendText("10");
range.CharacterFormat.FontName = "Arial";
range.CharacterFormat.FontSize = 10;
//保存文档
document.SaveToFile("Table.docx");
VB.NET
'创建Word文档
Dim document As Document = New Document
'添加section
Dim section As Section = document.AddSection
'添加表格
Dim table As Table = section.AddTable(true)
'指定表格的行数和列数(2行,3列)
table.ResetCells(2, 3)
'获取单元格(第1行第1个单元格)并添加文本
Dim range As TextRange = table(0, 0).AddParagraph.AppendText("产品")
range.CharacterFormat.FontName = "Arial"
range.CharacterFormat.FontSize = 12
range.CharacterFormat.TextColor = Color.Teal
range.CharacterFormat.Bold = true
'获取单元格(第1行第2个单元格)并添加文本
range = table(0, 1).AddParagraph.AppendText("单价")
range.CharacterFormat.FontName = "Arial"
range.CharacterFormat.FontSize = 12
range.CharacterFormat.TextColor = Color.Teal
range.CharacterFormat.Bold = true
'获取单元格(第1行第3个单元格)并添加文本
range = table(0, 2).AddParagraph.AppendText("数量")
range.CharacterFormat.FontName = "Arial"
range.CharacterFormat.FontSize = 12
range.CharacterFormat.TextColor = Color.Teal
range.CharacterFormat.Bold = true
'获取单元格(第2行第1个单元格)并添加文本
range = table(1, 0).AddParagraph.AppendText("A")
range.CharacterFormat.FontName = "Arial"
range.CharacterFormat.FontSize = 10
'获取单元格(第2行第2个单元格)并添加文本
range = table(1, 1).AddParagraph.AppendText("¥1800")
range.CharacterFormat.FontName = "Arial"
range.CharacterFormat.FontSize = 10
'获取单元格(第2行第3个单元格)并添加文本
range = table(1, 2).AddParagraph.AppendText("10")
range.CharacterFormat.FontName = "Arial"
range.CharacterFormat.FontSize = 10
'保存文档
document.SaveToFile("Table.docx")
动态向表格添加行和单元格
如果需要动态地向表格添加行和单元格,我们需要使用Table.AddRow() 方法和 TableRow.AddCell()方法。代码示例:
C#
//创建Word文档
Document doc = new Document();
//添加section
Section section = doc.AddSection();
//添加表格
Table table = section.AddTable(true);
//添加第1行
TableRow row1 = table.AddRow();
//添加第1个单元格到第1行
TableCell cell1 = row1.AddCell();
cell1.AddParagraph().AppendText("姓 名");
//添加第2个单元格到第1行
TableCell cell2 = row1.AddCell();
cell2.AddParagraph().AppendText("年 龄");
//添加第2行
TableRow row2 = table.AddRow(true,false);
//添加第1个单元格到第2行
TableCell cell3 = row2.AddCell();
cell3.AddParagraph().AppendText("约 翰");
//添加第2个单元格到第2行
TableCell cell4 = row2.AddCell();
cell4.AddParagraph().AppendText("21");
table.AutoFit(AutoFitBehaviorType.AutoFitToWindow);
//保存文档
doc.SaveToFile("Table2.docx");
VB.NET
'创建Word文档
Dim doc As Document = New Document
'添加section
Dim section As Section = doc.AddSection
'添加表格
Dim table As Table = section.AddTable(true)
'添加第1行
Dim row1 As TableRow = table.AddRow
'添加第1个单元格到第1行
Dim cell1 As TableCell = row1.AddCell
cell1.AddParagraph.AppendText("姓 名")
'添加第2个单元格到第1行
Dim cell2 As TableCell = row1.AddCell
cell2.AddParagraph.AppendText("年 龄")
'添加第2行
Dim row2 As TableRow = table.AddRow(true, false)
'添加第1个单元格到第2行
Dim cell3 As TableCell = row2.AddCell
cell3.AddParagraph.AppendText("约 翰")
'添加第2个单元格到第2行
Dim cell4 As TableCell = row2.AddCell
cell4.AddParagraph.AppendText("21")
table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)
'保存文档
doc.SaveToFile("Table2.docx")
创建嵌套表格
我们可以使用Body.AddTable()方法来向一个表格中的指定单元格添加一个嵌套表格。代码示例:
C#
//创建Word文档
Document doc = new Document();
Section section = doc.AddSection();
//添加表格
Table table = section.AddTable(true);
table.ResetCells(2, 3);
//设置行高和列宽
table.Rows[0].Height = 20;
table.Rows[1].Height = 50;
table.Rows[0].Cells[0].Width = table.Rows[0].Cells[2].Width = 50;
table.Rows[1].Cells[0].Width = table.Rows[1].Cells[2].Width = 50;
table.AutoFit(AutoFitBehaviorType.AutoFitToWindow);
//添加文本到单元格
table[0, 0].AddParagraph().AppendText("学 号");
table[0, 1].AddParagraph().AppendText("姓 名");
table[0, 2].AddParagraph().AppendText("成 绩");
table[1, 0].AddParagraph().AppendText("01");
table[1, 1].AddParagraph().AppendText("张 三");
table[1, 2].AddParagraph().AppendText("详 情");
//添加嵌套表格到第2行第3个单元格
Table nestedTable = table[1, 2].AddTable(true);
nestedTable.ResetCells(3, 2);
nestedTable.AutoFit(AutoFitBehaviorType.AutoFitToContents);
//添加文本到嵌套表格
nestedTable[0, 0].AddParagraph().AppendText("科 目");
nestedTable[0, 1].AddParagraph().AppendText("成 绩");
nestedTable[1, 0].AddParagraph().AppendText("语 文");
nestedTable[1, 1].AddParagraph().AppendText("88");
nestedTable[2, 0].AddParagraph().AppendText("数 学");
nestedTable[2, 1].AddParagraph().AppendText("95");
//保存文档
doc.SaveToFile("Nested_Table.docx", FileFormat.Docx2013);
VB.NET
'创建Word文档
Dim doc As Document = New Document
Dim section As Section = doc.AddSection
'添加表格
Dim table As Table = section.AddTable(true)
table.ResetCells(2, 3)
'设置行高和列宽
table.Rows(0).Height = 20
table.Rows(1).Height = 50
table.Rows(0).Cells(2).Width = 50
table.Rows(1).Cells(2).Width = 50
table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)
'添加文本到单元格
table(0, 0).AddParagraph.AppendText("学 号")
table(0, 1).AddParagraph.AppendText("姓 名")
table(0, 2).AddParagraph.AppendText("成 绩"))
table(1, 0).AddParagraph.AppendText("01")
table(1, 1).AddParagraph.AppendText("张 三")
table(1, 2).AddParagraph.AppendText("详 情")
'添加嵌套表格到第2行第3个单元格
Dim nestedTable As Table = table(1, 2).AddTable(true)
nestedTable.ResetCells(3, 2)
nestedTable.AutoFit(AutoFitBehaviorType.AutoFitToContents)
'添加文本到嵌套表格
nestedTable(0, 0).AddParagraph.AppendText("科 目")
nestedTable(0, 1).AddParagraph.AppendText("成 绩")
nestedTable(1, 0).AddParagraph.AppendText("语 文")
nestedTable(1, 1).AddParagraph.AppendText("88")
nestedTable(2, 0).AddParagraph.AppendText("数 学")
nestedTable(2, 1).AddParagraph.AppendText("95")
'保存文档
doc.SaveToFile("Nested_Table.docx", FileFormat.Docx2013)