2013-11-25 3 views
0

C#에서 Word 문서 용 편집기를 만들고 있습니다. 그리고 RichTextBox를 사용하여 서식이있는 텍스트를 만들고 XDocumento docx 슬라이스를 추가합니다.리치 텍스트 상자 및 Docx 변환

누군가 변환 할 수있는 방법이 있다면 알려주시겠습니까 ?? 형식화하는이 ...

이 예는 이미 더 복잡한 것 같습니다

를 RichTextBox 형식이에

{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1046{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n{\\colortbl ;\\red255\\green0\\blue0;}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17 A \\b Nissan \\b0 est\\'e1 \\i mesmo \\i0 disposta a \\ul fincar \\ulnone seus p\\'e9s em solo \\cf1 brasileiro\\cf0 . \\par\r\n}\r\n 

, OPENXML 문서 형식 (DOCX의 기본값)

<w:p w:rsidR = "00685F88" w:rsidRDefault = "00685F88"> 
      <w:pPr> 
       <w:widowControl w:val = "0"/> 
       <w:autoSpaceDE w:val = "0"/> 
       <w:autoSpaceDN w:val = "0"/> 
       <w:adjustRightInd w:val = "0"/> 
       <w:spacing 
        w:after = "0pt" 
        w:line = "12pt" 
        w:lineRule = "auto"/> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
      </w:pPr> 
      <w:r> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
       <w:t xml:space = "preserve">A</w:t> 
      </w:r> 
      <w:r> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:b/> 
        <w:bCs/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
       <w:t xml:space = "preserve">Nissan</w:t> 
      </w:r> 
      <w:r> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
       <w:t xml:space = "preserve">está</w:t> 
      </w:r> 
      <w:r> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:i/> 
        <w:iCs/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
       <w:t xml:space = "preserve">mesmo</w:t> 
      </w:r> 
      <w:r> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
       <w:t xml:space = "preserve">disposta a</w:t> 
      </w:r> 
      <w:r> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
        <w:u w:val = "single"/> 
       </w:rPr> 
       <w:t xml:space = "preserve">fincar</w:t> 
      </w:r> 
      <w:r> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
       <w:t xml:space = "preserve">seus pés em solo</w:t> 
      </w:r> 
      <w:r> 
       <w:rPr>`enter code here` 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:color w:val = "FF0000"/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
       <w:t>brasileiro</w:t> 
      </w:r> 
      <w:r> 
       <w:rPr> 
        <w:rFonts 
         w:ascii = "Microsoft Sans Serif" 
         w:hAnsi = "Microsoft Sans Serif" 
         w:cs = "Microsoft Sans Serif"/> 
        <w:sz w:val = "17"/> 
        <w:szCs w:val = "17"/> 
       </w:rPr> 
       <w:t xml:space = "preserve">.</w:t> 
      </w:r> 
     </w:p> 

도 마찬가지입니다.

수동으로하고 싶지 않았습니다.

Micrsoft Office Word에서는 RTF 형식 (richtextbox에서 사용됨)을 DOCX로 변환 할 수 있습니다. 하지만 Wird 라이브러리에서이 문제에 대한 해결책을 찾을 수 없습니다.

감사합니다.

+0

RTF를 사용하면 스스로 어려움을 겪고있는 것입니다. – JasonPlutext

답변

0

Regex를 사용할 수 있습니다. 이 패턴은 첫 번째 예제 인 {Text.*?"(.*?)"}과 일치하며이를 증명하는 Regex 101입니다. 그런 다음이에 대한 C#은 다음과 같습니다

var val = Regex.Replace(input, pattern, "<w:p><w:r><w:t>$0</w:t></w:r></w:p>"); 
+0

Thx Michael, 나는 그것에 대해 생각해보아야한다. 문제는 변환해야하는 다양한 형식의 형식이 될 것이다. 이 경우 텍스트 만 있습니다. 다른 예를 추가합니다. –

+0

@ ThiagoTozzi, 불행히도 주위에 방법이 없습니다. 필요에 따라 여러 Regex 패턴을 만들어야합니다. –

0

당신은 단지 RTFTextBox를 참조 할 때는 .text 옵션을 사용할 수 있어야합니다. 예 : mytextbox.rtf vs mytextbox.text. 적어도 Visual Studio 2010에서 작동하는 방식과 동일합니다.