我想构建动态表(未知的编译时数量的表,行,合并单元格等)
除了rtf格式之后的低级标签写法之外,还有什么好方法(可能是一些不错的dll?)用于处理rtf?答案 0 :(得分:2)
使用RTF创建表并不难,因为知道控制字是最难的部分。我在C#WPF中与他们合作过。使用RTF表的技巧是每行独立于表的其余部分。因此,第1行不知道第2行是同一个表的一部分,也不知道可见。
以下代码将为指定的行/列数创建一个表。如果要以编程方式合并单元格,则必须跟踪要合并的单元格,并且只运行一个Row Cell循环。
private String GetTableRTF(int numRows, int numColumns)
{
StringBuilder rtfTableString = new StringBuilder();
// For each row, construct the rtf version of a row
for (int i = 0; i < numRows; i++)
{
// Start the row, autofits it to the page and gives it a black border by default
rtfTableString.Append(@"{\trowd\trautofit1");
rtfTableString.Append(@"\trbrdrt\brdrs\brdrw15\brdrcf11"); // Top border
rtfTableString.Append(@"\trbrdrl\brdrs\brdrw15\brdrcf11"); // Left border
rtfTableString.Append(@"\trbrdrb\brdrs\brdrw15\brdrcf11"); // Bottom border
rtfTableString.Append(@"\trbrdrr\brdrs\brdrw15\brdrcf11"); // Right border
rtfTableString.Append(@"\trbrdrh\brdrs\brdrw15\brdrcf11"); // Cell Horizontal border
rtfTableString.Append(@"\trbrdrv\brdrs\brdrw15\brdrcf11"); // Cell Vertical border
for (int z = 0; z < numColumns; z++)
{
// Create the cells for the table
rtfTableString.Append(@"{\intbl \cell}");
}
//finish the row
rtfTableString.Append(@"\row}");
}
return rtfTableString.ToString();
}
这将为您提供一个基本表格,该表格将自动调整到窗口并具有基本的黑色边框。任何进一步的设计调整都取决于你。