動的にテーブルを作成したい (テーブル、行、結合セルなどのコンパイル時の不明な数)
低レベルのタグをrtfフォーマットに従って書く以外に、rtfで作業するための良い方法はありますか?
コントロール ワードが最も難しい部分であることを知っているため、RTF を使用してテーブルを作成することはそれほど難しくありません。私は C# WPF でそれらを使用しました。RTF テーブルの秘訣は、各行がテーブルの残りの部分から独立していることです。したがって、Row 1 は、Row 2 が同じテーブルの一部であることを知りません。
次のコードは、指定された行数/列数のテーブルを作成します。プログラムでセルをマージする場合は、マージするセルを追跡し、Row Cell ループを 1 つ少なく実行する必要があります。
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();
}
これにより、ウィンドウに自動適合し、基本的な黒い境界線を持つ基本的なテーブルが得られます。それ以上のデザインの微調整はあなた次第です。