【发布时间】:2019-11-17 20:37:30
【问题描述】:
我有一个包含Rich text Content Control 的 Word 文档。
我想添加带有新行的文本。
using (WordprocessingDocument theDoc = WordprocessingDocument.Open(docName, true))
{
MainDocumentPart mainPart = theDoc.MainDocumentPart;
foreach (SdtElement sdt in mainPart.Document.Descendants<SdtElement>())
{
SdtAlias alias = sdt.Descendants<SdtAlias>().FirstOrDefault();
if (alias != null)
{
string sdtTitle = alias.Val.Value;
var t = sdt.Descendants<Text>().FirstOrDefault();
if (sdtTitle == "Body")
{
t.Text = "Welcome to Yazd With its winding lanes, forest of badgirs,\r\n mud-brick houses and delightful places to stay, Yazd is a 'don't miss' destination. On a flat plain ringed by mountains, \r\nthe city is wedged between the northern Dasht-e Kavir and southern Dasht-e Lut and is every inch a city of the desert." }
}
}
}
我使用带有\r\n 的文本,但不添加新行。
【问题讨论】:
-
但是文字加了? \r\n 是否被遗漏了?请注意,对于一个新行,仅使用
\r或\n,而不是两者(应该给出两行)。你确定这是一个 RichText 内容控件而不是纯文本吗?如果您以用户身份在 Word 中打开文档,是否可以在其中键入新行? -
啊,
model-view-controller和这个问题有什么关系? -
@CindyMeister,“\r\n”(回车和换行)是 Windows 操作系统上的行分隔符。例如,在 Unix、Linux 和 macOS 上,行分隔符是“\n”(换行符)。
-
@ThomasBarnekow 此信息与使用 Open XML 文件格式添加到 Word 文档的内容无关。首先,Word 无法识别该组合,其次,它当然不应该用于在 Open XML 文档中生成新行。问题中的代码将按原样显示字符。如果需要换行,代码需要生成 Paragraphs 和 Runs。
-
@CindyMeister,我明白这一点。我是 Open XML SDK 和 PowerTools for Open XML 的贡献者,我在下面的回答也应该支持这一点。 Word 会将每个行分隔符呈现为单个空格字符(可以通过使用在文本中具有一个或多个行分隔符的 w:t 元素来验证)。我刚刚对您关于不使用“\r\n”作为行分隔符的评论做出了反应。与您的建议相反,“\r\n”不会产生两行,因为这两个控制字符的组合是 Windows 上的行分隔符。
标签: c# model-view-controller ms-word openxml openxml-sdk