2012-10-18 20 views
0

表我想構建動態表(表未知編譯時數,行,合併單元格等)構建動態的RTF

有沒有什麼好辦法(可能是一些不錯的dll?)與工作rtf除了低級標籤寫入rtf格式之後?

回答

2

使用RTF創建表格並不困難,因爲知道控制字是最難的部分。我已經在C#WPF中與他們合作過。 RTF Tables的訣竅是每行都獨立於表的其餘部分。所以,第1行不知道第2行是同一張表的一部分,並且與第二行相對。

以下代碼將爲指定數量的行/列創建一個表。如果您想以編程方式合併單元格,則必須跟蹤要合併的單元格,並且只運行一個較少的行單元格循環。

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(); 
    } 

這將給你一個基本表,將自動調整到窗口,有一個基本的黑色邊框。任何進一步的設計調整將取決於你。