Openxml:使用自定义属性添加新行

时间:2014-01-13 16:59:58

标签: c# ms-word openxml openxml-sdk

我使用OpenXML库(在C#中)从MS CRM 2013中提取数据并使用CustomDocumentProperty将其插入到单词模板中,一切正常,直到我尝试从多行文本框插入文本,文本获取拉得很好但是Word中的输出都在一行上。从CRM中取出的字符串看起来像"这个\ n \ n \ n \ n \ n \ n \ Multi \ n \ _评论",我尝试用\ r \ n和Environment.NewLine替换\ n但是我得到相同的结果。有人知道如何在CustomDocumentProperty中插入新行吗?我是这样构建新属性的:

var stringValue = "This\nIs\nA\nTest\n\Multiline\nComment";

if (stringValue != null && stringValue.Contains("\n"))
{
    stringValue = stringValue.Replace("\n", "\r\n");
}

var newProp = new CustomDocumentProperty
{
    VTLPWSTR = new VTLPWSTR(stringValue),
    Name = ((CustomDocumentProperty)mergeField).Name,
    FormatId = "{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"
};

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

换行符和制表符在Microsoft Office中不起作用。

每次遇到\n字符时,您都必须创建一个新的Paragraph元素。

<w:p>
    <w:r>
        <w:t> Hi,
        </w:t>
    </w:r>
</w:p>
<w:p>
    <w:r>
        <w:t> I'm Varun
        </w:t>
    </w:r>
</w:p>

这就是你的XML应该是什么样的,我建议你使用Open XML SDK 2.5 Productivity tool,以便你能够更好地使用XML。