gpt4 book ai didi

c# - 如何在 OpenXML 段落、运行、文本中保留带格式的字符串?

转载 作者:行者123 更新时间:2023-11-30 16:00:25 25 4
gpt4 key购买 nike

我按照这种结构将字符串中的文本添加到 OpenXML 运行中,这是 Word 文档的一部分。

字符串有换行格式甚至段落缩进,但当文本被插入到运行中时,这些都被剥离了。我该如何保存它?

Body body = wordprocessingDocument.MainDocumentPart.Document.Body;

String txt = "Some formatted string! \r\nLook there should be a new line here!\r\n\r\nAndthere should be 2 new lines here!"

// Add new text.
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());
run.AppendChild(new Text(txt));

最佳答案

您需要使用 Break为了添加新行,否则它们将被忽略。

我已经敲定了一个简单的扩展方法,它将在新行上拆分一个字符串并将 Text 元素附加到 RunBreak 新行所在的位置:

public static class OpenXmlExtension
{
public static void AddFormattedText(this Run run, string textToAdd)
{
var texts = textToAdd.Split(new[] { Environment.NewLine }, StringSplitOptions.None);

for (int i = 0; i < texts.Length; i++)
{
if (i > 0)
run.Append(new Break());

Text text = new Text();
text.Text = texts[i];
run.Append(text);
}
}
}

可以这样使用:

using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(@"c:\somepath\test.docx", true))
{
var body = wordDoc.MainDocumentPart.Document.Body;

String txt = "Some formatted string! \r\nLook there should be a new line here!\r\n\r\nAndthere should be 2 new lines here!";

// Add new text.
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());

run.AddFormattedText(txt);
}

产生以下输出:

enter image description here

关于c# - 如何在 OpenXML 段落、运行、文本中保留带格式的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com