Как создать новую таблицу со строками и ячейками, объединенными по вертикали (rowspan) и горизонтали (colspan).
Полный код
using System.IO;
using System.Linq;
using SautinSoft.Document;
using SautinSoft.Document.Tables;
namespace Sample
{
class Sample
{
static void Main(string[] args)
{
// Get your free 100-day key here:
// https://sautinsoft.com/start-for-free/
MergeRowsAndCellsInTable();
}
/// <summary>
/// Create a new table with rows and cells merged by vertical (rowspan) and horizontal (colspan).
/// </summary>
/// <remarks>
/// Details: https://sautinsoft.com/products/document/help/net/developer-guide/table-with-merged-rows-and-cells.php
/// </remarks>
public static void MergeRowsAndCellsInTable()
{
DocumentCore dc = new DocumentCore();
Table table = new Table(dc,
new TableRow(dc,
new TableCell(dc, new Paragraph(dc, "Cell 1-1")),
new TableCell(dc, new Paragraph(dc, "Cell 1-2")),
new TableCell(dc, new Paragraph(dc, "Cell 1-3")),
new TableCell(dc, new Paragraph(dc, "Cell 1-4"))),
new TableRow(dc,
new TableCell(dc, new Paragraph(dc, "Cell 2-1 -> 3-2"))
{
RowSpan = 2,
ColumnSpan = 2
},
new TableCell(dc, new Paragraph(dc, "Cell 2-3 -> 2-4"))
{
ColumnSpan = 2
}),
new TableRow(dc,
new TableCell(dc) { ColumnSpan = 2 },
new TableCell(dc, new Paragraph(dc, "Cell 3-3")),
new TableCell(dc, new Paragraph(dc, "Cell 3-4"))),
new TableRow(dc,
new TableCell(dc, new Paragraph(dc, "Cell 4-1"))),
new TableRow(dc,
new TableCell(dc, new Paragraph(dc, "Cell 5-1"))));
table.TableFormat.DefaultCellPadding = new Padding(10, LengthUnit.Pixel);
// Set the table width to 10 cm and convert it to points.
double tableWidthInPoints = LengthUnitConverter.Convert(10, LengthUnit.Centimeter, LengthUnit.Point);
table.TableFormat.PreferredWidth = new TableWidth(tableWidthInPoints, TableWidthUnit.Point);
for (int r = 0; r < table.Rows.Count; r++)
{
for (int c = 0; c < table.Rows[r].Cells.Count; c++)
{
TableCell cell = table.Rows[r].Cells[c];
cell.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Dashed, Color.Black, 1);
cell.CellFormat.BackgroundColor = new Color("#FFCC00");
}
}
dc.Sections.Add(new Section(dc, table));
dc.Save("MergedTableCells.docx");
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("MergedTableCells.docx") { UseShellExecute = true });
}
}
}
Imports System.IO
Imports System.Linq
Imports SautinSoft.Document
Imports SautinSoft.Document.Tables
Namespace Sample
Friend Class Sample
Shared Sub Main(ByVal args() As String)
MergeRowsAndCellsInTable()
End Sub
''' Get your free 100-day key here:
''' https://sautinsoft.com/start-for-free/
''' <summary>
''' Create a new table with rows and cells merged by vertical (rowspan) and horizontal (colspan).
''' </summary>
''' <remarks>
''' Details: https://sautinsoft.com/products/document/help/net/developer-guide/table-with-merged-rows-and-cells.php
''' </remarks>
Public Shared Sub MergeRowsAndCellsInTable()
Dim dc As New DocumentCore()
Dim table As Table = New Table(dc,
New TableRow(dc,
New TableCell(dc, New Paragraph(dc, "Cell 1-1")),
New TableCell(dc, New Paragraph(dc, "Cell 1-2")),
New TableCell(dc, New Paragraph(dc, "Cell 1-3")),
New TableCell(dc, New Paragraph(dc, "Cell 1-4"))),
New TableRow(dc,
New TableCell(dc, New Paragraph(dc, "Cell 2-1 -> 3-2")) With
{
.RowSpan = 2,
.ColumnSpan = 2
},
New TableCell(dc, New Paragraph(dc, "Cell 2-3 -> 2-4")) With
{.ColumnSpan = 2}),
New TableRow(dc,
New TableCell(dc) With
{.ColumnSpan = 2},
New TableCell(dc, New Paragraph(dc, "Cell 3-3")),
New TableCell(dc, New Paragraph(dc, "Cell 3-4"))),
New TableRow(dc, New TableCell(dc, New Paragraph(dc, "Cell 4-1"))),
New TableRow(dc, New TableCell(dc, New Paragraph(dc, "Cell 5-1"))))
table.TableFormat.DefaultCellPadding = New Padding(10, LengthUnit.Pixel)
' Set the table width to 10 cm and convert it to points.
Dim tableWidthInPoints As Double = LengthUnitConverter.Convert(10, LengthUnit.Centimeter, LengthUnit.Point)
table.TableFormat.PreferredWidth = New TableWidth(tableWidthInPoints, TableWidthUnit.Point)
For r As Integer = 0 To table.Rows.Count - 1
Dim c As Integer = 0
Do While c < table.Rows(r).Cells.Count
Dim cell As TableCell = table.Rows(r).Cells(c)
cell.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Dashed, Color.Black, 1)
cell.CellFormat.BackgroundColor = New Color("#FFCC00")
c += 1
Loop
Next r
dc.Sections.Add(New Section(dc, table))
dc.Save("MergedTableCells.docx")
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo("MergedTableCells.docx") With {.UseShellExecute = True})
End Sub
End Class
End Namespace
Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.com или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже: