
openxml
文章平均质量分 85
lindexi_gd
我是微软Windows应用开发方向的最具价值专家,欢迎访问我博客blog.lindexi.com里面有大量WPF和UWP博客
展开
-
dotnet OpenXML 文本删除线解析方法
本文来告诉大家如何解析读取在 OpenXML 里面存放的文本删除线,本文使用 PowerPoint 作为例子来告诉大家如何读取然后在 WPF 应用里面显示在开始之前,期望大家已了解如何在 dotnet 应用里面读取 PPT 文件,如果还不了解读取方法,请参阅 C# dotnet 使用 OpenXml 解析 PPT 文件期望在阅读本文之前,先阅读 dotnet OpenXML 简单聊聊 P...原创 2021-08-20 11:56:00 · 469 阅读 · 0 评论 -
【转】[PPTX解析] 图片 重新着色存储详解
PPTX对图片进行重新着色和设置透明颜色这两个行为,PPT并不会对原图进行修改,而是通过将修改信息直接存入xml中。也就是说不会生成一张处理过的图片,第三方应用需要获取存储信息,解析后将原图进行修改或通过着色器改变渲染效果。原作者: 晓嗔戈原文: 传送门存储解析首先,让我们来看一下PPTX提供了哪些重新着色的选项:可以看到,PPT的着色选项大体分为以下几类:效果类型包含...转载 2021-08-19 00:33:58 · 704 阅读 · 0 评论 -
dotnet OpenXML PPT 动画框架入门
本文将从 OpenXML 方面聊 PPT 的动画框架,本文是属于编程方面而不是 PPT 动画制作教程开始之前,还请掌握一些基础知识,如阅读以下博客C# dotnet 使用 OpenXml 解析 PPT 文件Office 文档解析 文档格式和协议dotnet OpenXML 解析 PPT 页面元素文档格式本文不讨论 Slide Master 和 Slide Layout 的动画,...原创 2021-08-19 00:33:58 · 955 阅读 · 0 评论 -
dotnet OpenXML 形状的 Outline 的 LineWidth 线条轮廓粗细宽度的行为
本文来和大家聊聊 OpenXML 里面的给 PPT 用的形状里面的线条宽度的定义,以及在 PowerPoint 上的行为本文属于 OpenXML 系列博客,前后文请参阅 Office 使用 OpenXML SDK 解析文档博客目录在 OpenXML 里面,定义形状的轮廓是通过 a:ln 也就是 OpenXML SDK 里面定义的 DocumentFormat.OpenXml.Drawin...原创 2021-07-27 00:56:29 · 467 阅读 · 0 评论 -
dotnet OpenXML 继承组合颜色的 GrpFill 属性
在 OpenXML 的颜色画刷填充,有特殊的填充是 GrpFill 属性,对应 OpenXML SDK 定义的 DocumentFormat.OpenXml.Drawing.GroupFill 类型本文属于 OpenXML 系列博客,前后文请参阅 Office 使用 OpenXML SDK 解析文档博客目录在颜色画刷的定义,如形状的填充色,在形状放入到组合里面时,可以让形状的颜色继承组合...原创 2021-07-25 02:43:18 · 358 阅读 · 0 评论 -
dotnet OpenXML 利用合并表格单元格在 PPT 文档插入不可见的额外版权信息
本文告诉大家如何利用 Office 对于 OpenXML 支持的特性,在 PPT 的表格里面,通过合并单元格存放一些额外的信息,这些信息对用户来说是不可见的,但是进行拷贝表格等的时候,可以保存此信息内容原创 2021-09-04 00:30:10 · 1326 阅读 · 1 评论 -
dotnet OpenXML 读取 PPT 内嵌 ole 格式 Excel 表格的信息
在 Office 中,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式。本文来介绍如何读取 PPT 内嵌 ole 格式的 xls+ 表格的方法在 Office 的 PPT 中,插入表格可以对应多个不同的方式:通过 GraphicData 内嵌到 PPTX 页面里面通过嵌入文件方式通过 SmartArt 模拟的表格,本质上就是 S...原创 2021-09-04 00:30:10 · 2609 阅读 · 0 评论 -
dotnet OpenXML 读取 PPT 形状边框定义在 Style 的颜色画刷
本文来和大家聊聊在 PPT 形状使用了 Style 样式的颜色画刷读取方法在开始之前,期望大家已了解如何在 dotnet 应用里面读取 PPT 文件,如果还不了解读取方法,请参阅 C# dotnet 使用 OpenXml 解析 PPT 文件本文核心是来和大家聊聊 ECMA 376 文档里面,第 20.1.4.2.19 章的 lnRef (Line Reference) 内容里面没有提到的...原创 2021-08-30 01:00:43 · 1303 阅读 · 0 评论 -
dotnet OpenXML 读取 PPT 动画进入退出强调动画类型
本文告诉大家,如何判断 PPT 的某个元素动画属于进入或退出或强调等类型的动画根据 ECMA-376 文档可以了解到,在 PPT 动画中,通过 cTn 也就是 OpenXML sdk 定义的 CommonTimeNode 类型的 PresetClass 属性,即可用来判断当前的动画类型例如新建一个空白的 PPT 文件,在里面放一个元素,然后设置飞入动画,此时的飞入动画是进入动画。通过 解压...原创 2021-07-02 00:32:26 · 549 阅读 · 0 评论 -
dotnet OpenXML 读取 PPT 主序列进入退出强调动画
本文告诉大家如何读取 PPT 文件里面,放在主动画序列 MainSequence 的进入和退出和强调的动画,和在 OpenXML 里面的存放方式如以下的课件内容,给一个元素添加了进入强调退出的动画,动画之间没有相关影响,通过点击触发动画,如下图大概的动画内容如下 <p:timing> <p:tnLst> <p:par> ...原创 2021-07-02 00:32:26 · 424 阅读 · 0 评论 -
C# dotnet 带编号项目符号在 OpenXML SDK 对应的枚举值
本文告诉大家在 OpenXML SDK 里面文本框的文本带自动编号的项目符号,不同的编号在 OpenXML SDK 上的枚举值在 OpenXML SDK 使用 TextAutoNumberSchemeValues 枚举表示自动编号的项目符号使用的自动编号是哪个本文告诉大家对应的值的枚举值ArabicPeriod 1.2.3.ArabicParenR 1)2)3)RomanUppe...原创 2020-03-28 01:36:21 · 386 阅读 · 0 评论 -
C# dotnet 使用 OpenXml 关闭时不自动保存文档方法
默认在使用 OpenXML SDK 读写 Office 文件,如 PPT 或 Word 或 Excel 文件时,在关闭时调用 Dispose 将会自动将更改部分写入到文件。本文告诉大家如何让 OpenXML SDK 不写入只是释放资源如使用以下代码传入 .docs 文件进行解析 using var wordprocessingDocument = Wordproces...原创 2021-07-01 00:42:06 · 580 阅读 · 0 评论 -
dotnet OpenXML 测量单位的角度和弧度值
在 OpenXML 中表示的角度和咱日常使用的角度不相同,而在 .NET 里面的 Math 函数里面使用的是弧度表示,此时就需要有一些转换。本文来告诉大家一些概念,让大家明白角度和弧度的差别其实在英文语境里面,可以采用 Angle 和 Radians 和 Degree 分开,不过在中文里面,咱使用角度代表一切,同时也用角度代表 0-360 度的角度值。而弧度特别指的是 0-2 π 范围的弧度...原创 2021-06-24 00:33:10 · 339 阅读 · 0 评论 -
dotnet OpenXML 预设 PresetColorValues 颜色对应的值
本文来告诉大家 ECMA 376 文档的 20.1.10.47 章的 ST_PresetColorVal 预设颜色值对应的颜色在 OpenXML SDK 里面,根据传入的 DocumentFormat.OpenXml.Drawing.PresetColorValues 可以获取到 ST_PresetColorVal 预设颜色值,而这些颜色值在 ECMA 376 文档的 20.1.10.47 ...原创 2021-06-05 01:09:24 · 449 阅读 · 0 评论 -
dotnet OpenXML SDK 形状几何 Geometry 的计算公式含义
本文来告诉大家,在 OpenXML 里面的 Geometry 的如 gdLst 和 ahLst 和 pathLst 等里面参数的公式的参数含义这部分内容放在 ECMA-376 的 20.1.10.55 章文档里面,本文只是将文档里面的内容翻译一下在使用 OpenXML 读取形状时,会看到有些形状的定义内容如下 <avLst xmlns="http://schemas....原创 2021-06-04 01:02:12 · 637 阅读 · 0 评论 -
dotnet OpenXML 读取形状轮廓线条样式序号超过主题样式列表数
在 OpenXML 中,默认的形状可以通过指定 LineReference 让形状使用文档主题里面的样式。文档主题里面包含多个样式,在形状里面指定样式通过的是序号的方法,如果在形状里面指定的序号超过了主题的数量,那么将会使用最后一项样式开始之前,我准备了这份课件,我将课件和代码都放在 GitHub 上可以在本文最后找到链接在这份课件中,第一页里面有一个形状元素,在形状元素里面定义了样式使用...原创 2021-05-26 00:41:09 · 409 阅读 · 0 评论 -
通过 COM 读取 Office PPT 文件提示 COMException 错误码 0x80004005 可能原因
使用 COM 的方式可以调用本机的 Office 组件进行 PPT 以及 Word 和 Excel 等文件的读写,在打开文件的时候,如果提示 System.Runtime.InteropServices.COMException (0x80004005) 就意味着这是一个通用的错误,没有具体的原因调用 COM 组件,提示 System.Runtime.InteropServices.COME...原创 2021-05-11 00:42:56 · 2544 阅读 · 0 评论 -
dotnet OpenXML 图片特效的 Color Change Effect 特效修改图片颜色
在 Office 中,如 PPT 和 Word 可以不对原图修改的前提下,通过叠加特效的方式,提供对图片的视觉输出进行修改的方法,本文将介绍 ECMA 376 里面的 第 20.1.8.16 章的 ClrChange (Color Change Effect) 的用法和功能。日常这个特效用来去背景如下图是一张图片,这张图片有背景色,这张图片是我瞎找的,如果有版权问题还请告诉我默认放入到...原创 2021-04-02 00:26:27 · 470 阅读 · 2 评论 -
dotnet OpenXML 图片特效的 BiLevel 黑白特效修改图片颜色
在 Office 中,如 PPT 和 Word 可以不对原图修改的前提下,通过叠加特效的方式,提供对图片的视觉输出进行修改的方法,本文将介绍 ECMA 376 里面的 第 20.1.8.11 章的 Bi-Level (Black White Effect) 的用法和功能如下图是一张图片,这张图片有颜色的,这张图片是我瞎找的,如果有版权问题还请告诉我默认放入到 PPT 里面的效果如下...原创 2021-04-02 00:26:27 · 371 阅读 · 0 评论 -
dotnet OpenXML 修复 Office 文档里面的百分比内容包含百分号
我在解析一个 PPT 文档的时候,发现了这个 PPT 文档的背景色的透明度百分比的字符串里面包含了百分号,而不是一个 OpenXml 里面的百分比单位原创 2021-02-02 00:32:55 · 430 阅读 · 0 评论 -
dotnet OpenXML SDK 形状的 rect Shape Text Rectangle 属性对文本框的坐标影响
在 Office 里面,对于形状,可以通过 a:rect 指定文本框的坐标原创 2021-02-03 00:28:05 · 467 阅读 · 0 评论 -
dotnet OpenXML 让 PathLst 自定义形状转 SVG 路径格式的 Geometry 内容
在 Office 文档里面,可以使用自己定制的自绘制形状,自己绘制的内容将会存放为 pathLst 也就是 List of Shape Paths 内容到文档里面。本文将告诉大家如何将 PathLst 自定义形状转换为标准的 SVG 路径,以支持在 WPF 或 UWP 中的 Path 元素作为 Geometry 显示原创 2021-02-03 00:28:05 · 636 阅读 · 0 评论 -
dotnet OpenXML 解析 WPS 不符合压缩文档规范的文档
我遇到了有老师给我反馈说用我的小工具去辅助编辑课件的时候,遇到了他使用 WPS 制作的文档打开失败,原因是 WPS 制作的一些文档不符合压缩文档规范。而 Office 的基于 ECMA 376 的文档,都是使用标准的 ZIP 压缩规范的文档,因此对于这些不符合压缩文档规范的文件,将会解析失败如果使用了不符合压缩规范的文件,那么在使用 OpenXML SDK 读取的时候,将会在解压缩的时候炸掉...原创 2021-01-08 00:29:33 · 1225 阅读 · 0 评论 -
dotnet OpenXML 修复 Office 文档里面包含格式不正确的 Uri 而无法解析
在使用 OpenXML 解析 Office 文档,无论是 PPT 还是 Word 还是 Excel 文档,都会使用标准方式解析。而此时的文档如果包含了错误的 Url 格式,例如不正确的邮件名的时候,将会在解析的时候出错。本文告诉大家如何修复这个问题尽管在 Office 2016 等版本,是可以在用户端制作出格式不正确的 Url 文档,如下图所示的内容此时在执行解析的时候,将会提示如下代...原创 2021-01-05 00:43:55 · 1200 阅读 · 0 评论 -
dotnet OpenXML 解析 WPS 不规范的 PPT 文件的 cNvPr 重复 id 问题
在收到了反馈说有一份课件,打开解析就发现替换的元素不对,原因是这个课件里面的 Slide Master 里面存在一个元素的 id 和某个页面的元素 id 是相同的,这不符合 ECMA 376 的规范。通过读取文档的内容,发现这是 WPS 制作出来的 PPT 文件。本文做一个存档,用来告诉大家有这个坑在 Office 2016 和 Office 2019 的行为判断请看以下两篇博客dotne...原创 2020-12-19 00:34:06 · 1147 阅读 · 1 评论 -
dotnet OpenXML 元素 cNvPr NonVisual Drawing Properties 重复 id 标识处理
使用 OpenXML 的格式的 Office 文档的元素,使用 p:cNvPr Non-Visual Drawing Properties 的 Id 属性作为标识,在标准协议这个标识是唯一的,但实际很多文档都存在重复的标识。本文告诉大家在使用 Office 2016 版本测试重复 id 的行为在 OpenXML 的元素的标识一个好的设计是使用 uint 作为标识符,这样做的兼容能力更强。因...原创 2020-09-29 00:58:28 · 442 阅读 · 0 评论 -
dotnet OpenXML 元素 cNvPr NonVisual Drawing Properties 的属性作用
本文收集元素属性 cNvPr Non-Visual Drawing Properties 的属性的作用本文的 Non-Visual Drawing Properties 也就是在 OpenXML 文档里面的 cNvPr 代码,在 ECMA 376 的 20.2.2.3 文档有详细说明在形状的 Non-Visual Drawing Properties 使用 p:cNvPr 表示,在图片使...原创 2020-09-29 00:58:28 · 608 阅读 · 0 评论 -
dotnet OpenXML 颜色变换
颜色变换是对基础颜色的相关属性的修改。 例如,透明度是与颜色相关的属性。 颜色转换被指定为任何颜色模型标签的子标签,可以在任何颜色加上颜色变换大概的写法如下<a:solidFill> <a:srgbClr val="00B050"> <a:alpha val="51000"/> </a:...原创 2020-09-09 01:31:08 · 832 阅读 · 0 评论 -
dotnet OpenXML 如何获取 schemeClr 颜色
颜色是一个大的主题,在 ECMA 376 里面用了 19 页 A4 描述了颜色,但仅是简单的描述。在 OpenXML 定义了 Scheme Color (schemeClr) 是用来表示主题的颜色,可以跟随主题的更改而更改颜色。例如我的文本设置为主题的文本颜色,那么在我更改文档主题的文本色就可以更改我的文本颜色在 OpenXML 的颜色里面,其中 Scheme Color (a:schem...原创 2020-09-09 01:31:08 · 803 阅读 · 0 评论 -
dotnet OpenXML SDK 文本占位符解析
在使用 OpenXML SDK 解析 PPT 文档的文本占位符的时候,需要对 PPT 的格式有一定的了解,尽管整个 OpenXML SDK 包括文档等都很详细。但是有一些细节文档上虽然有写,但是没有强调一下,就被我忽略了什么是文本占位符,其实这是在 PPT 添加的概念,在 PPT 里面用户可以编辑模版文件,在这里定义某个占位符文本的样式和坐标等如何制作占位符请看 PPT占位符,居然这么好用...原创 2020-09-23 02:27:59 · 772 阅读 · 0 评论 -
dotnet OpenXML 的 spcPct 和 spcPts 表示距离的不同
在 OpenXML 里面的文本排版里面使用到 spcPct (Spacing Percent) 和 spcPts(Spacing Points)两个不同的单位用来表示段前空白和段后空白以及行间距在 Office 的文本排版里面,会在 spcAft (Space After) 段后空白空间以及 spcBef (Space Before) 段前空白空间等使用 spcPct (Spacing P...原创 2020-07-10 00:53:05 · 435 阅读 · 0 评论 -
dotnet OpenXML 为什么资源使用 Relationship 引用
在 OpenXML 文档格式里面,所有的资源以及页面之间的引用等,都是通过 Relationship 的引用,如资源需要通过 GetReferenceRelationship 的方法才能拿到。那为什么要这样设计呢在做 Office 解析,可以看到资源的引用,如图片的引用等,不是应用相对的文件路径,而是使用 r:id="xx" 的方式引用,而实际的引用文件需要在 xx.rel...原创 2020-07-10 00:53:05 · 535 阅读 · 0 评论 -
Office 文档 文本排版布局 中华人民共和国国家标准 标点符号用法
我在做一个和 Office 差很多的文本排版软件,而文本排版软件里面的是有国家标准的,如果不符合标准那么这个排版软件是不专业的,或者说这个软件只是一个纯文本软件,而不是一个能做文档的软件核心规则如下其中标点符号规则相对复杂,规范如下详细请看 GB/T 15834 标点符号用法请自行百度 GB/T 15834 就可以找到标准文档当前支持最好的是 WPS 的文本排版,支持较弱的...原创 2020-07-20 10:19:53 · 611 阅读 · 0 评论 -
dotnet OpenXML 从文档生成创建文档的代码的库
本文和大家介绍 Serialize.OpenXml.CodeGen 这个支持从某个文档生成用于创建出这个文档的 C# 或 VB 代码的库。作用就是可以让小伙伴在拿到一份模版文件之后,可以通过 Serialize.OpenXml.CodeGen 生成能创建出这份文档的 C# 或 VB 的代码,用于在这份代码上面更改功能,做到创建定制 Docx 或 PPTX 或 Xlsx 文档的功能这是一个完...原创 2020-07-23 00:34:26 · 406 阅读 · 0 评论 -
dotnet OpenXML 简单聊聊 PPT 文本解析
在 Office 里面的文本解析最全的范围是 Word 文本,就是属性数量本身就特别多。本文只是简单和大家聊聊 Office 里面的 PPT 的文本的解析入门。尽管 PPT 的文本也是采用 DrawingDL 的文本属性为主,不过会用到的属性将比 Word 少很多。本文将和小伙伴介绍 PPT 的文本存放的方式在 PPT 中的文本框也是形状,只是形状里面添加了特殊的设置。而没有添加特殊设置的...原创 2020-07-24 06:13:23 · 745 阅读 · 0 评论 -
dotnet OpenXML 文本 Text Line Break 的作用
本文主要和小伙伴聊 a:br 这个标记的作用在 OpenXML 的 <a:br/> 的定义是 Text Line Break 是放在文本的 <a:p> 的标记,用于表示换行如 ECMA 376 文档的 21.1.2.2.1 所说,这个标记的作用是在一段内,将两个 TextRun 使用一个垂直的换行分割。这个元素可以具备当前的 rPr (RunProperties)...原创 2020-07-24 06:13:23 · 548 阅读 · 0 评论 -
dotnet OpenXML 文本 EndParagraphRunProperties 的作用
其实我想要记录的仅仅只是 a:endParaRPr 对文本布局的作用按照 ECMA 376 的说法,此属性的作用是指定用户在此段落后开始输入其他文本时要保留的属性。只有在此段落的样式与段落本身不同时,才应设置此属性文本的属性会受到页面以及模版和所在段落的影响,而 a:endParaRPr 是一个放在 <a:p> 里面的标记,用来表示这一段的结束,在 OpenXML SDK 的...原创 2020-07-25 01:08:46 · 475 阅读 · 0 评论 -
Office Open XML 的测量单位
本文记录 Office Open XML (OOXML) 的测量单位在 Office Open XML 默认单位是 dxa 也就是像素点的 20 倍,如 ISO 216 A4 (210x297mm ~ 8.3×11.7in) 的大小可以使用下面代码表示在页面大小 Page width Page height 和边距 margin 和缩进 tabs 使用<w:pgSz w:w=&#...原创 2020-07-29 00:44:37 · 1119 阅读 · 0 评论 -
dotnet OpenXML 文本 BodyProperties 的属性作用
本文收集 a:bodyPr 文本框属性 BodyProperties 的属性的作用根据 ECMA-376 文档 21.1.2.1.1 bodyPr (Body Properties) 在 Office 的 OpenXML 使用这个属性定义文本框的属性本文的 OpneXMl SDK 的获取代码前提都有以下代码public void Foo(BodyProperties textBodyP...原创 2020-07-30 00:39:32 · 524 阅读 · 0 评论 -
dotnet OpenXML 文本字体的选择规则
在 Office 的文本排版里面,会根据字符选择使用哪个字体插槽。也就是实际上在 Office 里面可以在一个文本段里面指定多个字体,会根据实际的字符使用不同的字体在做 Office 解析的时候,在 OpenXML SDK 里面是没有找到表示字体的属性的,只能找到 LatinFont 和 EastAsianFont 和 ComplexScriptFont 和 SymbolFont 这几个...原创 2020-08-06 00:30:30 · 697 阅读 · 0 评论