C# 使用OpenXMLC在Word文件中的现有文本上标#

C# 使用OpenXMLC在Word文件中的现有文本上标#,c#,ms-word,openxml,openxml-sdk,C#,Ms Word,Openxml,Openxml Sdk,如何使用OpenXMLC#SDK为文档中的现有文本上标(请参见下图)?我发现了一篇文章,但它只是添加了新的上标(不存在文本) 以下开放式XML标记表示您的行“出生日期:2019年10月15日”,其中“th”格式为上标: 出生日期:10月15日 th , 2019 注意第二个w:r元素(Runclass)及其w:rPr子元素(RunPropertiesclass)和w:vertAlign孙子元素(VerticalTextAlignmentclass),它们将“th”格式化为上标 使用Open

如何使用OpenXMLC#SDK为文档中的现有文本上标(请参见下图)?我发现了一篇文章,但它只是添加了新的上标(不存在文本)


以下开放式XML标记表示您的行“出生日期:2019年10月15日”,其中“th”格式为上标:


出生日期:10月15日
th
, 2019
注意第二个
w:r
元素(
Run
class)及其
w:rPr
子元素(
RunProperties
class)和
w:vertAlign
孙子元素(
VerticalTextAlignment
class),它们将“th”格式化为上标

使用OpenXMLSDK,您可以按如下方式创建上面的段落(注意缩进匹配,以便查看对应关系):

var段落=
新段落(
新运行(
新文本(“出生日期:10月15日”),
新运行(
新运行属性(
新的VerticalTextAlignment{Val=VerticalPositionValues.Superscript}),
新文本(“th”),
新运行(
新文本(“,2019”);
更新2019-11-25: 如果您想如上所示格式化现有文本,则必须识别并格式化序号“st”、“nd”、“rd”和“th”。
段落格式上标(string innerText)
方法就是这样做的。它使用
Text-CreateText(string-Text)
方法为要渲染的任何文本(即不带前导或尾随空格)生成一个
w:Text
元素,该元素具有正确的
xml:space
属性

//匹配序号后缀“st”、“nd”、“rd”和“th”。
私有静态只读正则表达式OrdinalNumberSuffixRegex=

new Regex(“(?了解如何使用OpenXML SDK的最佳方法是从Microsoft站点下载OpenXML生产力工具。创建文档(使用Word)这有你想要的功能,保存它,然后用工具打开。你也可以创建两个版本的文档,一个有你感兴趣的功能,一个没有。然后使用工具区分这两个文档。你的功能将很容易看到谢谢你的帮助,但我想编辑现有段落(现有文档)中的文本(未添加新段落),是否有任何方法可以使用选择?或其他方法?如果您需要任何更具体的帮助,您需要非常精确地了解这是如何嵌入到代码中的。如果您的文本行包含在w:p中,则用新的w:p替换现有的w:p肯定是一个解决方案。您至少需要重新创建并替换w:r元素以形成如我的回答所示,如果你的文本包含在一段文字中,你必须创建三段文字才能达到预期效果。@AnhTú,你需要进一步的帮助来格式化/创建这些文字吗?@AnhTú,我添加了另一个代码示例,展示了如何格式化现有段落结果完全相同。