1

動的にテーブルを作成したい (テーブル、行、結合セルなどのコンパイル時の不明な数)

低レベルのタグをrtfフォーマットに従って書く以外に、rtfで作業するための良い方法はありますか?

4

1 に答える 1

2

コントロール ワードが最も難しい部分であることを知っているため、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();
    }

これにより、ウィンドウに自動適合し、基本的な黒い境界線を持つ基本的なテーブルが得られます。それ以上のデザインの微調整はあなた次第です。

于 2013-07-08T13:50:43.437 に答える