从SQL Server数据库到XML Word文档的nvarchar(max)不保留回车

本文关键字:max nvarchar 回车 保留 文档 Server SQL 数据库 Word XML | 更新日期: 2023-09-27 18:18:58

我编写了一个程序,它将从SQL Server表中获取信息并将信息放入MS WORD中。

foreach (String note in doc_object.alJobNotes)
{
    String formattednote = "";
    newTextElement = xdoc.CreateElement("w:t", wordmlNamespace);
    formattednote = note.Replace(Environment.NewLine, "
");
    XmlText newText = xdoc.CreateTextNode(formattednote);
    newTextElement.AppendChild(newText);
    XmlAttribute xmlSpace = xdoc.CreateAttribute(
                        "xml", "space",
                        "http://www.w3.org/XML/1998/namespace");
    xmlSpace.Value = "preserve";
    newTextElement.Attributes.Append(xmlSpace);
    ChildNode.ParentNode.InsertAfter(newTextElement, ChildNode);
    EmptyElement = xdoc.CreateElement("w:br", wordmlNamespace);
    EmptyElement.Attributes.Append(xmlSpace);
    ChildNode.ParentNode.InsertAfter(EmptyElement, ChildNode);
    ChildNode.ParentNode.InsertAfter(EmptyElement, ChildNode);
    ChildNode.ParentNode.InsertAfter(EmptyElement, ChildNode);
    ChildNode.ParentNode.InsertAfter(EmptyElement, ChildNode);
}

然而,当我打开Ms Word时,回车的地方只显示

我已经尝试用&#10;, (char)13, (char)10, <br/>, <w:cr>代替它,但我找不到如何做到这一点。

有什么建议吗?

从SQL Server数据库到XML Word文档的nvarchar(max)不保留回车

嗯,如果我正确地解释了您的代码和问题描述,我相信问题是您没有生成有效的WordOpenXML。(我假设这是docx文件格式!)

查看代码发出的原始XML,并将其与ZIP包中的样例Word文档的document. XML文件进行比较。

看起来您的代码将新行附加为w:t元素的一部分。但这不是WordOpenXML的设计方式。WordOpenXML更像这样,其中w:p是段落("回车"/ANSI 13):

<w:p>
  <w:r>
     <w:t>text here</w:t>
  </w:r>
</w:p>