我编写了一个程序,它将从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);
}
但是,当我打开Word时,回车的地方只是显示
我尝试将其替换为
,(char)13
,(char)10
,<br/>
,<w:cr>
,但我找不到如何操作。
有什么建议吗?
答案 0 :(得分:0)
好吧,如果我正确解释您的代码和问题描述,我认为问题在于您没有生成有效的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>