0

我正在为 C# 中的 Word 文档制作编辑器。我正在使用 RichTextBox 来创建具有其格式的文本,并添加一段 XDocumento docx。

有人可以告诉我你是否有任何转换的方法?包括格式化...

这个例子已经更复杂了:

富文本框格式:

{\\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 库中找不到解决方案。

谢谢。

4

2 回答 2

0

您可以使用正则表达式。此模式将匹配第一个示例 ,{Text.*?"(.*?)"}这是一个正则表达式 101来证明它。那么C#这将是:

var val = Regex.Replace(input, pattern, "<w:p><w:r><w:t>$0</w:t></w:r></w:p>");
于 2013-11-25T13:50:33.570 回答
0

在引用 RTFTextBox 时,您应该只能使用 .Text 选项。例如,mytextbox.rtf 与 mytextbox.text。至少这就是它在 Visual Studio 2010 中的工作方式。

于 2016-06-27T18:49:36.767 回答