我想动态构建表(未知的编译时表数、行数、合并单元格等)
除了按照 rtf 格式编写低级标签之外,还有什么好的方法(可能是一些不错的 dll?)来使用 rtf?
使用 RTF 创建表格并不难,知道控制字是最困难的部分。我在 C# WPF 中与他们合作过。RTF 表的诀窍是每一行都独立于表的其余部分。因此,第 1 行不知道第 2 行是同一张表的一部分,并且是 vis。
以下代码将为指定的行数/列数创建一个表。如果您想以编程方式合并单元格,则必须跟踪要合并的单元格,然后少运行一个 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();
}
这将为您提供一个基本表格,该表格将自动适应窗口并具有基本的黑色边框。任何进一步的设计调整都取决于您。