在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)