c# - 在 c# 中使用 openxml 进行文字处理时一行中的不同样式

标签 c# openxml openxml-sdk wordprocessingml

我使用下面的代码将两种不同的字符样式应用于一个段落的两次运行:

            Paragraph heading = new Paragraph();
            ParagraphProperties heading_pPr = new ParagraphProperties();
            heading.Append(heading_pPr);

            Run Run1 = new Run() { RsidRunProperties = "009531B2" };
            Text Text_Run1 = new Text("THIS IS TEST RUN 1");
            Run1.Append(Text_Run1);
            RunProperties rpr_Run1 = new RunProperties();
            rpr_Run1.RunStyle = new RunStyle() { Val = "CharacterStyle1" };

            Run Run2 = new Run();
            RunProperties rpr_Run2 = new RunProperties();
            rpr_Run2.RunStyle = new RunStyle() { Val = "CharacterStyle2" };
            Text text_Run2 = new Text("THIS IS TEST RUN 2");
            Run2.Append(text_Run2);

            heading.Append(Run1);
            heading.Append(Run2);
            body.Append(heading);

但是在运行代码之后,在 word 文件中这些运行得到了 Normal 风格。 我可以对段落应用段落样式但是我不能应用字符样式运行,我的代码哪里错了?

总结:

如何将字符样式应用到运行中以及如何让段落具有不同样式的运行?

最佳答案

您需要在其属性部分中指定段落的格式,否则它将回退到文档的默认设置,在本例中为 Normal。如果您的自定义样式未保存到文档的样式部分,也可能会发生这种情况。

将您的代码更改为:

Paragraph heading = new Paragraph();
ParagraphProperties heading_pPr = new ParagraphProperties();
heading.Append(heading_pPr);
ParagraphMarkRunProperties headingParagraphMarkRunProperties = new ParagraphMarkRunProperties();
RunStyle runStyle1 = new RunStyle(){ Val = "CharacterStyle1" };

headingParagraphMarkRunProperties.Append(runStyle1);
heading_pPr.Append(headingParagraphMarkRunProperties);

这将使您的段落采用您的自定义格式。您仍然需要将单独的样式应用于 run 元素以更改其格式,就像您在其余代码中所做的那样。

关于c# - 在 c# 中使用 openxml 进行文字处理时一行中的不同样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679402/

相关文章:

c# - 从 C# 到 javascript 的字符串数组示例不起作用

c# - 测试条件如何基于查询结果的计数?

c# - SAP 企业服务工作区

c# - 使用 open xml sdk 从 xlsx 中读取日期

openxml-sdk - 在没有得到 “Memory stream is not expandable”的情况下添加到从MemoryStream打开的WordprocessingDocument中吗?

c# - 在 Open XML 2.0 中打开一个 microsoft .xml 文件并添加变量数据

c# - 如何为 C# Windows 窗体定义窗口类名?

c# - 使用单个书签将文本添加到word中的多行

openxml - 如何在 Excel 工作表 OpenXML 2.0 C# 中创建图表/图形

excel - 是否可以在不使用 System.Drawing 对象 Graphics 和 Bitmap 的情况下使用 .Net 或 OpenXml 框架计算 Excel 列的宽度?