Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Visual Basic

Dim rt1 As New C1.C1Preview.RenderTable()
Dim row As Integer = 0
Do While (row < 10)
Dim col As Integer = 0 Do While (col < 4) rt1.Cells(row, col).Text = String.Format( _ "Text in cell({0}, {1})", row, col) col += 1 Loop row += 1

Loop
C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="27db0795-fa6b-45c7-b824-f867477d612c"><ac:plain-text-body><![CDATA[

RenderTable rt1 = new RenderTable(); for (int row = 0; row < 10; ++row) { for (int col = 0; col < 4; ++col) rt1.Cells[row, col].Text = string.Format( "Text in cell({0}, {1})", row, col);
]]></ac:plain-text-body></ac:structured-macro>
}

在任何时候,您可以通过查询Cols.Count(返回当前列数)和Rows.Count(返回当前行数)属性的值,获取表格当前的尺寸大小。
访问单元格,列和行
!MISSING PHRASE 'Show All'!
!MISSING PHRASE 'Hide All'!
和Tables主题中可以看到的示例代码一样,表格中全部的单元格由Cells集合表示,其类型为TableCellCollection。该集
合中的元素表示单个单元格,其类型为TableCell。为访问表格中的任意单元格,Cells集合可以按照单元格所在行和列的索引进行访问,就像这样:
Visual Basic

Visual Basic

Dim rt As New C1.C1Preview.RenderTable()

' 获取行索引10,列索引4的单元格:
Dim tc as TableCell = rt.Cells(10, 4)

C#

C#

RenderTable rt = new RenderTable();

// 获取行索引10,列索引4的单元格:

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="37d57de6-3d1b-4647-9d95-4112da804fb5"><ac:plain-text-body><![CDATA[

TableCell tc = rt.Cells[10, 4];

]]></ac:plain-text-body></ac:structured-macro>

表格的列通过Cols集合进行访问,其类型为TableColCollection,它包含TableCol类型的元素。和单元格一样,只要触及某个列,将创建该列。例如,如果你设置一个列的Style属性,但如果该列不存在就将会创建该列。
表格的行通过Rows集合进行访问,其类型为TableRowCollection,它包含TableRow类型的元素。同单元格以及列一
样,只要触及某个行,如果该行不存在将创建该行。例如,如果你设置一行的高度,则该行(以及它之前的所有行)将自动被创建。
请注意,所有的不包含具有实际内容的表格行将具有为零的高度,因此在呈现该表格时为不可见。
表格以及列宽,行高
!MISSING PHRASE 'Show All'!
!MISSING PHRASE 'Hide All'!
C1PrintDocument表格中的行和列均可以为自动计算尺寸,但是行和列的默认行为有所不同。默认情况下,行的高度为自动计算(按照该行单元格的内容进行计算),而列的宽度为固定值。RenderTable的默认宽度下面的代码将创建一个页面等宽的表格,具有三个宽度相等的列,以及10行按照单元格的内容自动计算高度的行:
Visual Basic

Visual Basic

Dim rt As New C1.C1Preview.RenderTable() rt.Style.GridLines.All = LineDef.Default Dim row As Integer = 0
Do While (row < 10)
Dim col As Integer = 0 Do While (col < 3) rt.Cells(row, col).Text = String.Format( _ "Cell({0},{1})", row, col) col += 1 Loop row += 1 Loop doc.Body.Children.Add(rt)

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="8ca126d1-fc24-4699-abcb-ecb0c08731e0"><ac:plain-text-body><![CDATA[

RenderTable rt = new RenderTable(); rt.Style.GridLines.All = LineDef.Default; for (int row = 0; row < 10; ++row) for (int col = 0; col < 3; ++col) rt.Cells[row, col].Text = string.Format( "Cell({0}, {1})", row, col); doc.Body.Children.Add(rt);

]]></ac:plain-text-body></ac:structured-macro>

使用一个全部自动计算尺寸的表格,相比默认设置,必须完成以下两件事情:
整个表格的宽度必须设置为自动(可以是字符串"auto",或静态字段Unit.Auto)
表格的RenderTable.ColumnSizingMode必须设置为TableSizingModeEnum.Auto。
这是修改后的代码:
Visual Basic

Visual Basic

Dim rt As New C1.C1Preview.RenderTable() rt.Style.GridLines.All = LineDef.Default Dim row As Integer = 0
Do While (row < 10)
Dim col As Integer = 0 Do While (col < 3) rt.Cells(row, col).Text = String.Format( _
"Cell({0},{1})", row, col)

col += 1
Loop
row += 1
Loop
rt.Width = Unit.Auto
rt.ColumnSizingMode = TableSizingModeEnum.Auto doc.Body.Children.Add(rt)


C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="c0798152-8e1d-44fd-beca-cbc1bcb96743"><ac:plain-text-body><![CDATA[

RenderTable rt = new RenderTable(); rt.Style.GridLines.All = LineDef.Default; for (int row = 0; row < 10; ++row) for (int col = 0; col < 3; ++col) rt.Cells[row, col].Text = string.Format( "Cell({0}, {1})", row, col); rt.Width = Unit.Auto; rt.ColumnSizingMode = TableSizingModeEnum.Auto; doc.Body.Children.Add(rt);

]]></ac:plain-text-body></ac:structured-macro>

修改后的代码使得表格中的每一列的宽度适显示应该列中单元格全部文本的宽度。
行和列的分组,页眉和页脚
!MISSING PHRASE 'Show All'!
!MISSING PHRASE 'Hide All'!
元素组表功能是表格提供的强大功能。分组允许将表格的若干元素作为一个整体访问(例如,可以为分组设置样式,就好像它是一个独立的元素)。支持列的分组,行的分组以及单元格分组。
访问分组行,请使用RowGroups集合(其类型为TableVectorGroupCollection)。该集合的元素类型为
TableVectorGroup。另一个有趣的属性是ColumnHeader该属性允许指定一组行为一个表格页眉,将在每一个新页面或者页面分栏的顶部进行重复。一个相关的属性是ColumnFooter,它允许指定一组行为一个表格页脚,同样也可以在每一页或者每一个页面分栏的末尾重复显示。
以下代码行显示如何指定一个表格的开始两行为表格页眉,在每一个分页符或者分栏符之后重复显示(这里的rt1是一个RenderTable对象):
Visual Basic

...