从数据库中将CR + LF写入Open XML

时间:2014-04-23 14:51:20

标签: ms-word newline openxml openxml-sdk

我正在尝试将一些数据存储在数据库中,并使用Open XML SDK使用它填充Word模板的内容控件。数据包含段落,因此其中包含回车符和换行符。数据以nvarchar存储在数据库中。

当我打开生成的文档时,CR + LF组合会显示为问号,并在其周围显示一个框(不确定此字符的名称)。这实际上是背靠背的两个序列,因此CR + LF CR + LF等于两个奇怪的字符:

strange character

如果我解压缩.docx,请执行自定义XML部分并执行十六进制转储,我可以清楚地看到0d0a 0d0a,因此CR + LF就在那里。 Word只是打印它很奇怪。

我已尝试在XmlWriter的设置中强制执行UTF-8编码,但这似乎没有帮助:

Dim docStream As New MemoryStream
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.Encoding = New UTF8Encoding(False)
Dim docWriter As XmlWriter = XmlTextWriter.Create(docStream, settings)

有没有人知道如何在通过Open XML SDK写入.docx时让Word正确呈现这些字符?

1 个答案:

答案 0 :(得分:0)

要绑定到Word 2013富文本控件,您的XML元素必须包含完整的docx。见[MS-DOCX]:

  

存储在XML元素中的数据将是一个转义字符串,由一个展平的WordprocessingML文档组成,该文档表示结构化文档标记范围内的格式化数据。

早期版本无法绑定富文本控件。

如果你绑定到纯文本控件,多行设置为true,那么事情应该有效(使用CR / LF,而不是w:br)。