Создание таблицы с форматированием с помощью классов DocumentCore и DocumentBuilder на C# и .NET


    В этом примере показано, как создавать простые настраиваемые таблицы с форматированием строк и ячеек используя DocumentCore и DocumentBuilder классы.

Полный код

using System;
using System.IO;
using System.Collections.Generic;
using SautinSoft.Document;
using System.Linq;
using SautinSoft.Document.Tables;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get your free 30-day key here:   
            // https://sautinsoft.com/start-for-free/

            TableWithDocumentCore();
            TableWithDocumentBuilder();
        }

        /// <summary>
        /// This sample shows how to creating a custom table with formatting using DocumentCore or DocumentBuilder classes.
        /// </summary>
        /// <remarks>
        /// Details: https://sautinsoft.com/products/document/help/net/developer-guide/from-customers-creating-custom-table-with-formatting-in-csharp-vb-net.php
        /// </remarks>
        public static void TableWithDocumentCore()
        {
            string documentPath = @"tableDC.pdf";

            // Let's create a new document.
            DocumentCore dc = new DocumentCore();

            Section s = new Section(dc);

            TableFormat tf = new TableFormat();
            tf.Borders.ClearBorders();
            tf.AutomaticallyResizeToFitContents = false;

            var table = new Table(dc);
           
            // Add columns with specified width.
            table.Columns.Add(new TableColumn(60));
            table.Columns.Add(new TableColumn(120));
            table.Columns.Add(new TableColumn(180));

            // Add rows with specified height.
            table.Rows.Add(new TableRow(dc));
            table.Rows[0].RowFormat.Height = new TableRowHeight(30, HeightRule.AtLeast);
            table.Rows.Add(new TableRow(dc));
            table.Rows[1].RowFormat.Height = new TableRowHeight(60, HeightRule.AtLeast);
            table.Rows.Add(new TableRow(dc));
            table.Rows[2].RowFormat.Height = new TableRowHeight(90, HeightRule.AtLeast);

            for (int r = 0; r < 3; r++)
                for (int c = 0; c < 3; c++)
                {
                    // Add cell.
                    var cell = new TableCell(dc);
                    table.Rows[r].Cells.Add(cell);

                    // Set cell's vertical alignment.
                    cell.CellFormat.VerticalAlignment = (VerticalAlignment)r;

                    // Add cell content.
                    var paragraph = new Paragraph(dc, $"Cell ({r + 1},{c + 1})");
                    cell.Blocks.Add(paragraph);

                    // Set cell content's horizontal alignment.
                    paragraph.ParagraphFormat.Alignment = (HorizontalAlignment)c;

                    if ((r + c) % 2 == 0)
                    {
                        // Set cell's background and borders.
                        cell.CellFormat.BackgroundColor = new Color(255, 242, 204);
                        cell.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Double, Color.Red, 1);
                    }
                }

            dc.Sections.Add(new Section(dc, table));

            // Save our document into PDF format.
            dc.Save(documentPath, new PdfSaveOptions() { Compliance = PdfCompliance.PDF_A1a });

            // Open the result for demonstration purposes.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(documentPath) { UseShellExecute = true });
        }
		
        public static void TableWithDocumentBuilder()
        {
            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);
            db.TableFormat.AutomaticallyResizeToFitContents = false;
			
            // Specify formatting of cells and alignment.
            db.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Single, Color.Green, 1);
            db.CellFormat.VerticalAlignment = VerticalAlignment.Top;
            table.Columns.Add(new TableColumn() { PreferredWidth = 100 });
            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;
            table.Columns.Add(new TableColumn() { PreferredWidth = 100 });
            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;
            table.Columns.Add(new TableColumn() { PreferredWidth = 150 });
            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 = "tableDB.docx";
            dc.Save(filePath);

            // Open the result for demonstration purposes.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(filePath) { UseShellExecute = true });
    }
   }
 }

Download

Option Infer On
Imports System
Imports System.IO
Imports System.Collections.Generic
Imports SautinSoft.Document
Imports System.Linq
Imports SautinSoft.Document.Tables

Namespace Example
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			TableWithDocumentCore()
			TableWithDocumentBuilder()
		End Sub
                ''' Get your free 30-day key here:   
                ''' https://sautinsoft.com/start-for-free/
		''' <summary>
		''' This sample shows how to creating a custom table with formatting using DocumentCore or DocumentBuilder classes.
		''' </summary>
		''' <remarks>
		''' Details: https://sautinsoft.com/products/document/help/net/developer-guide/from-customers-creating-custom-table-with-formatting-in-csharp-vb-net.php
		''' </remarks>
		Public Shared Sub TableWithDocumentCore()
			Dim documentPath As String = "tableDC.pdf"

			' Let's create a new document.
			Dim dc As New DocumentCore()

			Dim s As New Section(dc)

			Dim tf As New TableFormat()
			tf.Borders.ClearBorders()
			tf.AutomaticallyResizeToFitContents = False

			Dim table = New Table(dc)

			' Add columns with specified width.
			table.Columns.Add(New TableColumn(60))
			table.Columns.Add(New TableColumn(120))
			table.Columns.Add(New TableColumn(180))

			' Add rows with specified height.
			table.Rows.Add(New TableRow(dc))
			table.Rows(0).RowFormat.Height = New TableRowHeight(30, HeightRule.AtLeast)
			table.Rows.Add(New TableRow(dc))
			table.Rows(1).RowFormat.Height = New TableRowHeight(60, HeightRule.AtLeast)
			table.Rows.Add(New TableRow(dc))
			table.Rows(2).RowFormat.Height = New TableRowHeight(90, HeightRule.AtLeast)

			For r As Integer = 0 To 2
				For c As Integer = 0 To 2
					' Add cell.
					Dim cell = New TableCell(dc)
					table.Rows(r).Cells.Add(cell)

					' Set cell's vertical alignment.
					cell.CellFormat.VerticalAlignment = CType(r, VerticalAlignment)

					' Add cell content.
					Dim paragraph = New Paragraph(dc, $"Cell ({r + 1},{c + 1})")
					cell.Blocks.Add(paragraph)

					' Set cell content's horizontal alignment.
					paragraph.ParagraphFormat.Alignment = CType(c, HorizontalAlignment)

					If (r + c) Mod 2 = 0 Then
						' Set cell's background and borders.
						cell.CellFormat.BackgroundColor = New Color(255, 242, 204)
						cell.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Double, Color.Red, 1)
					End If
				Next c
			Next r

			dc.Sections.Add(New Section(dc, table))

			' Save our document into PDF format.
			dc.Save(documentPath, New PdfSaveOptions() With {.Compliance = PdfCompliance.PDF_A1a})

			' Open the result for demonstration purposes.
			System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(documentPath) With {.UseShellExecute = True})
		End Sub

		Public Shared Sub TableWithDocumentBuilder()
			Dim dc As New DocumentCore()
			Dim db As New DocumentBuilder(dc)

			' Create a new table with preferred width.
			Dim table As Table = db.StartTable()

		   ' db.TableFormat.PreferredWidth = new TableWidth(LengthUnitConverter.Convert(5, LengthUnit.Inch, LengthUnit.Point), TableWidthUnit.Point);
			db.TableFormat.AutomaticallyResizeToFitContents = False

			' Specify formatting of cells and alignment.
			db.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Single, Color.Green, 1)
			db.CellFormat.VerticalAlignment = VerticalAlignment.Top
			table.Columns.Add(New TableColumn() With {.PreferredWidth = 100})
			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
			table.Columns.Add(New TableColumn() With {.PreferredWidth = 100})
			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
			table.Columns.Add(New TableColumn() With {.PreferredWidth = 150})
			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.
			Dim filePath As String = "tableDB.docx"
			dc.Save(filePath)

			' Open the result for demonstration purposes.
			System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(filePath) With {.UseShellExecute = True})
		End Sub
	End Class
End Namespace

Download


Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу [email protected] или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.

?>