2012-10-18 1 views
0

에서 테이블 I (일부 좋은 dll을 할 수있다?) 빌드 동적 RTF

어떤 좋은 방법이 빌드 동적 테이블 (테이블의 알 수없는 컴파일 시간 수, 행 병합 세포 등) 원하는 작업을위한 rtf 형식을 따르는 하위 ​​수준 태그 쓰기 외에 rtf?

답변

2

컨트롤 단어가 가장 힘든 부분이므로 RTF에서 테이블을 만드는 것이 어렵지 않습니다. 나는 C# WPF에서 그들과 함께 일 해왔다. RTF 테이블의 트릭은 각 행이 나머지 테이블과 독립적이라는 것입니다. 따라서 Row 1은 Row 2가 동일한 테이블의 일부인지, vis를 알지 못합니다.

다음 코드는 지정된 수의 행/열에 대한 테이블을 만듭니다. 프로그래밍 방식으로 셀을 병합하려면 병합 할 셀을 추적하고 하나의 행 셀 루프를 덜 실행해야합니다.

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

이렇게하면 창에 자동 맞춤되고 기본 검은 색 테두리가있는 기본 테이블이 제공됩니다. 더 이상의 디자인 조정은 당신에게 달린 것입니다.