2021年5月26日星期三

dotnet OpenXML 读取形状轮廓线条样式序号超过主题样式列表数

在 Open

在 Open

开始之前,我准备了这份课件,我将课件和代码都放在 GitHub 上可以在本文最后找到链接

在这份课件中,第一页里面有一个形状元素,在形状元素里面定义了样式使用的是第 5 个样式

<p:sp> <p:style> <a:lnRef idx="5">  <a:schemeClr val="accent1">  <a:shade val="50000" />  </a:schemeClr> </a:lnRef> </p:style></p:sp>

使用 C# dotnet 使用 Open

   using (var presentationDocument =    DocumentFormat.Open

以上的细节是 a:lnRef 指定的 idx 是序号,而序号是从 1 开始的,咱的集合默认使用 0 开始

接下来是获取文档的主题,在 Office 的优先级是 Slide 然后是 SlideLayout 最后才是 SlideMaster 的主题

    // 获取主题    var themeOverride = slidePart.ThemeOverridePart?.ThemeOverride     ?? slidePart.SlideLayoutPart.ThemeOverridePart?.ThemeOverride;    FormatScheme formatScheme = themeOverride?.FormatScheme;    if (formatScheme is null)    {     formatScheme = slidePart.SlideLayoutPart.SlideMasterPart.ThemePart.Theme.ThemeElements.FormatScheme;    }

在这份课件,使用的是放在 Theme1.

     <a:themeElements>     <a:fmtScheme name="Office">      <a:lnStyleLst>      <a:ln w="6350" cap="flat" cmpd="sng" algn="ctr">       <a:solidFill>       <a:schemeClr val="phClr" />       </a:solidFill>       <a:prstDash val="solid" />       <a:miter lim="800000" />      </a:ln>      <a:ln w="12700" cap="flat" cmpd="sng" algn="ctr">       <a:solidFill>       <a:schemeClr val="phClr" />       </a:solidFill>       <a:prstDash val="solid" />       <a:miter lim="800000" />      </a:ln>      <a:ln w="69050" cap="flat" cmpd="sng" algn="ctr">       <a:solidFill>       <a:srgbClr val="954F72" />       </a:solidFill>       <a:prstDash val="solid" />       <a:miter lim="800000" />      </a:ln>      </a:lnStyleLst>     </a:fmtScheme>     </a:themeElements>

以上的 FormatScheme 类就是存放 a:fmtScheme 的内容

使用下面代码获取线条样式

    var lineStyleList = formatScheme.LineStyleList;    var outlineList = lineStyleList.Elements<Outline>().ToList();

如果形状的样式序号没有大于主题定义的样式列表数量,那么使用对应的样式。如果定义的序号超过了主题定义的样式列表数量,就需要使用最后一个样式,请看代码

    Outline themeOutline;    if (lineStyle > outlineList.Count)    {     themeOutline = outlineList[^1];    }    else    {     themeOutline = outlineList[(int)lineStyle];    }

上面代码获取的 Outline 就是形状线条在主题样式的值

本文所有代码放在 github 和 gitee 欢迎小伙伴访问

更多请看 Office 使用 Open







原文转载:http://www.shaoqun.com/a/760840.html

跨境电商:https://www.ikjzd.com/

upc:https://www.ikjzd.com/w/111

asinseed:https://www.ikjzd.com/w/533


在Open在Open开始之前,我准备了这份课件,我将课件和代码都放在GitHub上可以在本文最后找到链接在这份课件中,第一页里面有一个形状元素,在形状元素里面定义了样式使用的是第5个样式<p:sp><p:style><a:lnRefidx="5"><a:schemeClrval="accent1"><a:
邮乐:https://www.ikjzd.com/w/1776
慧聪商务网:https://www.ikjzd.com/w/1836
focalprice:https://www.ikjzd.com/w/1094.html
和老公哥们一起玩出了事 口述我与老公哥们的故事:http://lady.shaoqun.com/a/269485.html
Wish即将推出A+物流计划!:https://www.ikjzd.com/articles/96822
表妹跟我炫耀男友私处的尺寸:http://www.30bags.com/m/a/251491.html

没有评论:

发表评论