The basic algorithm for create a table using DocumentBuilder is simple:
DocumentCore dc = new DocumentCore();
DocumentBuilder db = new DocumentBuilder(dc);
Calling db.StartTable is the first step in building a table. It can be also called inside a cell, in this case, it starts a nested table. The next method to call is db.InsertCell.
After you call db.InsertCell, a new cell is created and any content you add using other methods of the DocumentBuilder class will be added to the current cell. To start a new cell in the same row, call db.InsertCell again. Use the db.CellFormat property to specify cell formatting.
Call db.EndRow to finish the current row. If you call db.InsertCell immediately after that, then the table continues on a new row. Use the db.RowFormat property to specify row formatting.
Call db.EndTable to finish the current table. This method should be called only once after db.EndRow was called. When called, db.EndTable moves the cursor out of the current cell to a position just after the table. The following example demonstrates how to build a formatted table that contains 3 rows and 3 columns.
Complete code
using System;
using SautinSoft.Document;
using SautinSoft.Document.Tables;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Create_Table_with_Builder
{
class Program
{
static void Main(string[] args)
{
DocumentCore dc = new DocumentCore();
DocumentBuilder db = new DocumentBuilder(dc);
// Create a new table with preferred width
Table table = db.StartTable();
db.TableFormat.PreferredWidth = new TableWidth(LengthUnitConverter.Convert(5, LengthUnit.Inch, LengthUnit.Point), TableWidthUnit.Point);
// Specify formatting of cells and alignment
db.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Single, Color.Green, 1);
db.CellFormat.VerticalAlignment = VerticalAlignment.Top;
db.ParagraphFormat.Alignment = HorizontalAlignment.Center;
// Specify height of rows and write text
db.RowFormat.Height = new TableRowHeight(105f, HeightRule.Exact);
db.InsertCell();
db.Write("This is Row 1 Cell 1");
db.InsertCell();
db.Write("This is Row 1 Cell 2");
db.InsertCell();
db.Write("This is Row 1 Cell 3");
db.EndRow();
// Specify formatting of cells and alignment
db.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Single, Color.Black, 1);
db.CellFormat.VerticalAlignment = VerticalAlignment.Center;
db.ParagraphFormat.Alignment = HorizontalAlignment.Left;
// Specify height of rows and write text
db.RowFormat.Height = new TableRowHeight(150f, HeightRule.Exact);
db.InsertCell();
db.Write("This is Row 2 Cell 1");
db.InsertCell();
db.Write("This is Row 2 Cell 2");
db.InsertCell();
db.Write("This is Row 2 Cell 3");
db.EndRow();
// Specify formatting of cells and alignment
db.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Single, Color.Orange, 1);
db.CellFormat.VerticalAlignment = VerticalAlignment.Bottom;
db.ParagraphFormat.Alignment = HorizontalAlignment.Right;
// Specify height of rows and write text
db.RowFormat.Height = new TableRowHeight(125f, HeightRule.Exact);
db.InsertCell();
db.Write("This is Row 3 Cell 1");
db.InsertCell();
db.Write("This is Row 3 Cell 2");
db.InsertCell();
db.Write("This is Row 3 Cell 3");
db.EndRow();
db.EndTable();
// Save our document into docx format.
string filePath = "Result.docx";
dc.Save(filePath);
// Open the result for demonstration purposes.
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(filePath) { UseShellExecute = true });
}
}
}
If you need a new code example or have a question: email us at support@sautinsoft.com or ask at Online Chat (right-bottom corner of this page) or use the Form below: