首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在PowerPoint OpenXml C#中访问特定的TextBody

,可以通过以下步骤实现:

  1. 首先,确保已经引入了Open XML SDK库,可以通过NuGet包管理器添加"DocumentFormat.OpenXml"库。
  2. 创建一个PresentationDocument对象,用于打开PPTX文件:
代码语言:txt
复制
using DocumentFormat.OpenXml.Packaging;

string filePath = "path_to_pptx_file.pptx";
using (PresentationDocument presentationDocument = PresentationDocument.Open(filePath, false))
{
    // 在这里执行操作
}
  1. 获取PresentationPart对象,用于访问Presentation的内容:
代码语言:txt
复制
PresentationPart presentationPart = presentationDocument.PresentationPart;
  1. 获取Presentation的主要部分,即PresentationPart中的Presentation对象:
代码语言:txt
复制
Presentation presentation = presentationPart.Presentation;
  1. 获取Presentation中的幻灯片集合,即Presentation对象中的SlideIdList:
代码语言:txt
复制
SlideIdList slideIdList = presentation.SlideIdList;
  1. 根据需要访问特定的幻灯片,可以通过SlideIdList中的SlideId来获取SlidePart对象:
代码语言:txt
复制
SlideId slideId = slideIdList.ChildElements[slideIndex] as SlideId;
SlidePart slidePart = presentationPart.GetPartById(slideId.RelationshipId) as SlidePart;

其中,slideIndex是幻灯片的索引,从0开始。

  1. 获取SlidePart中的所有文本框,可以通过遍历SlidePart中的所有Shape元素,并判断其是否为TextBody类型:
代码语言:txt
复制
IEnumerable<Shape> shapes = slidePart.Slide.Descendants<Shape>();
foreach (Shape shape in shapes)
{
    if (shape is Shape && shape.HasTextBody)
    {
        TextBody textBody = shape.TextBody;
        // 在这里执行对TextBody的操作
    }
}
  1. 对于TextBody对象,可以进一步访问其内部的Paragraph和Run等元素,以获取和修改文本内容。

这是一个基本的示例,用于在PowerPoint OpenXml C#中访问特定的TextBody。根据具体的需求,可以进一步扩展和优化代码。对于更多Open XML SDK的用法和详细信息,可以参考Open XML SDK文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

dotnet OpenXML WPF 解析实现 PPT 文本描边效果

本文是使用 WPF 做个 PowerPoint 系列的博客,本文来告诉大家如何解析 PPT 里面的文本描边效果,在 WPF 应用中绘制出来,实现像素级相同 背景知识 在开始之前,期望你了解了 PPT 解析的入门知识...如对 PPT 解析了解很少,请参阅 C# dotnet 使用 OpenXml 解析 PPT 文件 在 PPT 里面可以给文本的某些文字设置描边效果,描边效果从 OpenXML 层上是不属于特效的,只是属于边框属性...,进行判断 获取文本框的文本,可以使用如下代码 var textBody = shape.TextBody!...代码 本文所有代码和测试文件放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码...gitee 的源,如果 gitee 不能访问,请替换为 github 的源 git remote remove origin git remote add origin https://github.com

98920

dotnet OpenXML 文本删除线解析方法

本文来告诉大家如何解析读取在 OpenXML 里面存放的文本删除线,本文使用 PowerPoint 作为例子来告诉大家如何读取然后在 WPF 应用里面显示 在开始之前,期望大家已了解如何在 dotnet...应用里面读取 PPT 文件,如果还不了解读取方法,请参阅 C# dotnet 使用 OpenXml 解析 PPT 文件 期望在阅读本文之前,先阅读 dotnet OpenXML 简单聊聊 PPT 文本解析...以下是本文效果 在 OpenXML 文档,将文本的删除线放在了文本的 Run 属性里面,大概内容如下 的样式也是特别多的 如删除线的 TextStrikeValues 的枚举,在 ECMA 376 的第 20.1.10.78 章可以了解到有单线条的删除线和双线条的删除线,在 OpenXML...Canvas 是放在 XAML 的控件,本文所有代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码

90110
  • dotnet OpenXML 文本 BodyProperties 的 FontScale 与文本字号缩放

    本文来告诉大家,在 OpenXML 的 BodyProperties 的 NormalAutoFit 的 FontScale 属性缩放文本框的文本字号的方法 通过 ECMA 376 文档可以了解到 BodyProperties...开始之前,先使用 C# dotnet 使用 OpenXml 解析 PPT 文件 的方法读取测试的文档。...获取文本内容,在 WPF 显示代码如下 foreach (var paragraph in textBody.ElementsOpenXml.Drawing.Paragraph...PPT 相同 本文所有代码和测试文件放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码...以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源 git remote remove origin git remote add origin https://

    67830

    C# 使用openxml解析PPTX中的文本内容

    前言       本文讨论的仅针对微软Office 2007以后的(OOXML定义)PowerPoint文档,Office 2007以前的用二进制格式定义的(ppt格式)文档不在本文讨论范围。...DocumentFormat.OpenXml用于加载解析pptx文档,FreeSpire.Doc用于解析pptx中嵌入的doc文档内容,详见解析嵌入的doc的文本。...1、直接保存在slide*.xml文件的节点数据;2、以oleObject对象的形式存储在word文档中;3、以oleObject对象的形式存储在bin文件中。...对象在slide*.xml文件中记录形式如下图: progId的值为“Word.Document.8”表示嵌入的对象是Office 2007以前的数据格式,值为“Word.Document.12”表示嵌入的对象是...Office 2007以后的OOXML定义的数据格式直接通过DocumentFormat.OpenXml解析,需要注意的是在解析word中的段落需要用DocumentFormat.OpenXml.Wordprocessing.Paragraph

    47210

    dotnet OpenXML 解析 PPT 文本字体获取详解

    在 OpenXML 的 PPT 的文本的字体是一个比较复杂的概念,即使在 OpenXML SDK 的辅助下,也需要自己写很多的逻辑。...在 OpenXML SDK 里面有这个定义,请看代码 var textBodyListStyle = textBody.ListStyle; 我准备了这份简洁的文档,这份文档将需要用到本文说讲到的大部分知识才能解析出实际的字体是哪个...; var textBody = shape.TextBody; var textBodyListStyle = textBody.ListStyle; Debug.Assert(textBodyListStyle.ChildElements.Count...此时就需要用到 defaultTextStyle 定义的内容,在开始写代码之前,先看一下在文档里面是如何定义的 在测试文档里面的 Presentation.xml 是这样定义的,这份文档放在 github...github 欢迎小伙伴访问,此时就能拿到字体 如果此时的 Theme1.xml 定义是如下呢 <a:latin typeface="Calibri" panose

    1.5K30

    dotnet OpenXML 幻灯片 PPTX 的 Slide Id 和页面序号的关系

    在使用 OpenXML SDK 进行 Office 文档的解析时,对幻灯片 PPTX 文档的页面解析也许会遇到页面顺序的问题,本文告诉大家在 Office 文档里面页面的序号和顺序之间的关系以及如何读取页面序号...在开始之前,我期望你是了解一些 PPT 解析的相关知识的,入门级博客请看 C# dotnet 使用 OpenXml 解析 PPT 文件 在 C# dotnet 使用 OpenXml 解析 PPT 文件...这篇博客中没有详细告诉大家页面顺序的问题,但是按照 C# dotnet 使用 OpenXml 解析 PPT 文件 这篇博客的写法就是能拿到对的页面顺序 在 ECMA 376 标准中说明,在 Presentation.xml...p:sldIdLst 将会存放在 PPT 画布里面多个页面之间的顺序,上面代码中页面的 Slide Id 是 id 这个属性,也就是当前的文档只有一个页面,这个页面的 Slide Id 是 277 的值...MsoTriState.msoFalse, MsoTriState.msoFalse); foreach (Microsoft.Office.Interop.PowerPoint.Slide

    75910

    dotnet OpenXML 利用合并表格单元格在 PPT 文档插入不可见的额外版权信息

    本文告诉大家如何利用 Office 对于 OpenXML 支持的特性,在 PPT 的表格里面,通过合并单元格存放一些额外的信息,这些信息对用户来说是不可见的,但是进行拷贝表格等的时候,可以保存此信息内容...在开始之前,期望大家已了解很多 OpenXML 知识,详细请看 Office 使用 OpenXML SDK 解析文档博客目录 在 PPT 的表格里面,采用了 RowSpan 用来表示单元格跨行,对应的在下一行的单元格将会被标记...例如我对第一行第一个单元格设置合并单元格,合并行,那么在第二行的第一列的单元格将被标记 vMerge="1" 表示被合并,如下面表格 在 Office 读取 OpenXML 文档,将无视 vMerge...="1" 的存在,也就是此属性只是给开发者看的而已,无论是否存在都不会影响到单元格的合并 但事实上,依然可以在标记了 vMerge="1" 的单元格上面添加内容,例如以下有删减的 OpenXML 文档...本文以上的测试文件和代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

    1K10

    C# dotnet 使用 OpenXml 解析 PPT 里面的视频

    本文告诉大家如何从 PPTX 文件里面解析出视频 我期望看到本文的小伙伴是了解 OpenXML 的,如果想要解析 Office 的文档,我推荐使用使用 OpenXML SDK 这个开源的库,更多入门级博客请看...C# dotnet 使用 OpenXml 解析 PPT 文件 我做了一个简单的 PPT 文件,这个文件里面只有一页,这一页上面有一个视频。...r:link 拿到对应的资源,在 PPT 里面,用 GetPartById 获取 ChildrenRelationshipParts 的资源,用 GetReferenceRelationship 拿到...ReferenceRelationshipList 的资源 在 PPT 里面的视频放在 ReferenceRelationshipList 使用下面代码拿到 var openXmlPart...(), "林德熙是逗比.mp4"); File.WriteAllBytes(file, ReadAllBytes(stream)); 代码放在 github 欢迎小伙伴访问

    67820

    dotnet OpenXML 在 PPTX 表格单元格加上 VerticalMerge 或 HorizontalMerge 将导致 WPS 丢失文本

    此行为与 Office 的 PowerPoint 不同,预计是 WPS 的坑 如以下核心代码,设置表格单元格的 VerticalMerge 和 HorizontalMerge 属性 A.TableCell...如下图为我使用代码生成的文档,分别在 WPS 和 Office 的 PowerPoint 打开的效果 从上图可见 WPS 的表格的单元格内丢失了文本 默认从 Office 的 PowerPoint 创建的表格...如果表格单元格没有合并,是没有设置 VerticalMerge 和 HorizontalMerge 属性,这就意味着如果遇到 VerticalMerge 和 HorizontalMerge 属性被设置,那必定只有在设置为...); return graphicFrame1; } 本文代码放在 github 和 gitee 上,可以使用如下命令行拉取代码 先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码...以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。

    9910

    【DB笔试面试839】在Oracle中,如何限定特定IP访问数据库?

    ♣ 问题 在Oracle中,如何限定特定IP访问数据库?...♣ 答案 总体来说有3种办法可以限定特定IP访问数据库,第一种是利用登录触发器,如下: CREATE OR REPLACE TRIGGER CHK_IP_LHR AFTER LOGON ON DATABASE...否则,这些用户还是会正常登录到数据库,只是将相应的报错信息写入到告警日志中。所以,拥有IMP_FULL_DATABASE和DBA角色的用户以及SYS和EXFSYS用户将不能通过这种方式限制登录。...IP地址列表,多个IP地址使用逗号分开 TCP.EXCLUDED_NODES=(IP1,IP2,……) #禁止访问数据库的IP地址列表,多个IP地址使用逗号分开 之后重新启动监听器即可,若禁止访问的...⑥ 这个配置适用于Oracle 9i及其以上版本,在Oracle 9i之前的版本使用文件protocol.ora。 ⑦ 在服务器上直接连接数据库不受影响。 ⑧ 这种限制方式是通过监听器来限制的。

    1.5K30

    在特定环境中安装指定版本的Docker

    通常用官方提供的安装脚本或软件源安装都是安装的比较新 Docker 版本,有时我们需要在一些特定环境的服务器上安装指定版本的 Docker。今天我们就来讲一讲如何安装指定版本的 Docker 。...hkp://pgp.mit.edu:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D 新增一个 docker.list 文件,在其中增加对应的软件安装源...docker.list deb https://apt.dockerproject.org/repo ubuntu-xenial main CentOS 新增一个 docker.repo 文件,在其中增加对应的软件安装源...raw=true | sh 使用需要的 Docker 版本替换以下脚本中的 ,目前该脚本支持的 Docker 版本: 1.10.3 1.11.2 1.12.1 1.12.2 1.12.3 1.12.4...1.12.5 1.12.6 1.13.0 1.13.1 17.03.0 17.03.1 17.04.0 注:脚本使用 USTC 的软件包仓库,已基于 Ubuntu_Xenial , CentOS7 以及

    3.9K20

    dotnet OpenXML 形状的 Outline 的 LineWidth 线条轮廓粗细宽度的行为

    本文来和大家聊聊 OpenXML 里面的给 PPT 用的形状里面的线条宽度的定义,以及在 PowerPoint 上的行为 本文属于 OpenXML 系列博客,前后文请参阅 Office 使用 OpenXML...SDK 解析文档博客目录 在 OpenXML 里面,定义形状的轮廓是通过 a:ln 也就是 OpenXML SDK 里面定义的 DocumentFormat.OpenXml.Drawing.Outline...将上面文档使用 PowerPoint 打开,可以看到在画布没有缩放时的界面如下 接着将 PowerPoint 的画布缩放到最大,可以看到形状的轮廓粗细依然没有任何变化,保持屏幕一个像素的大小 通过...PowerPoint 的属性面板可以看到形状的宽度确实是 0 的大小 以上的文档放在 github 和 gitee 欢迎访问 可以继续在当前代码仓库里面输入以下命令获取 git pull origin...如下面文档的值,通过 dotnet OpenXML 解压缩文档为文件夹工具 制作新的 PPT 文档,在 PowerPoint 打开 <p:cNvPr

    56930

    在字符串中删除特定的字符

    首先我们考虑如何在字符串中删除一个字符。由于字符串的内存分配方式是连续分配的。我们从字符串当中删除一个字符,需要把后面所有的字符往前移动一个字节的位置。...在具体实现中,我们可以定义两个指针(pFast和pSlow),初始的时候都指向第一字符的起始位置。当pFast指向的字符是需要删除的字符,则pFast直接跳过,指向下一个字符。...这样,前面被pFast跳过的字符相当于被删除了。用这种方法,整个删除在O(n)时间内就可以完成。 接下来我们考虑如何在一个字符串中查找一个字符。当然,最简单的办法就是从头到尾扫描整个字符串。...我们可以新建一个大小为256的数组,把所有元素都初始化为0。然后对于字符串中每一个字符,把它的ASCII码映射成索引,把数组中该索引对应的元素设为1。...这个时候,要查找一个字符就变得很快了:根据这个字符的ASCII码,在数组中对应的下标找到该元素,如果为0,表示字符串中没有该字符,否则字符串中包含该字符。此时,查找一个字符的时间复杂度是O(1)。

    9K90

    flash在C#中的应用

    这个动画是Flash做的,而且嵌入到程序中简直做到无缝融合,因为右键点击它也不会有那特有而烦人的Flash右键菜单。 因此将Flash融合到WinForm中能够增强程序的多媒体效果和炫丽的外观。...现在我们就来看看在C#桌面程序中如何插入Flash视频,而且去掉烦人的右键菜单。...首先要插入Flash就必须使用Flash控件,在工具栏右键选择“选择项…”,然后在“COM组件”面板下点击“浏览”按钮,在本机电脑C:\WINDOWS\system32\Macromed\Flash\目录里选择...打开VS2008,新建一个Windows程序,然后把刚才我们选择的Flash控件Shockwave Flash Object拖到窗体中,这时窗体中会出现一个白色的矩形框,Name属性我们设置为Myflash...该类中包含各种Flash的事件和属性,在这里我们只对右键菜单的事件感兴趣,因此我们去重写该事件。

    1.8K10

    如何改进 AI 模型在特定环境中的知识检索

    在当今数字化的时代,AI 模型的应用越来越广泛,而如何提高其在特定环境中的知识检索能力成为了一个关键问题。本文将结合Anthropic 文章,深入探讨改进 AI 模型知识检索的方法。...Contextual Embeddings 在嵌入之前为每个块预置特定于块的解释上下文,就像给每个知识块加上了一个独特的标签。...例如,有些模型在处理自然语言文本时表现出色,而有些模型则更适合处理特定领域的知识。在选择嵌入模型时,需要根据具体的应用场景进行评估和选择。 3....五、结论 通过对 Contextual Retrieval 和 reranking 技术的介绍,我们可以看出,这些方法可以结合使用,以最大限度地提高 AI 模型在特定环境中的知识检索准确性。...总之,改进 AI 模型在特定环境中的知识检索是一个复杂而又具有挑战性的问题。但通过不断地探索和创新,我们相信可以找到更加有效的方法,为 AI 技术的发展做出更大的贡献。

    8000

    dotnet OpenXML 转换 PathFillModeValues 为颜色特效

    在 OpenXml 预设形状,有一些形状设置了 PathFillModeValues 枚举,此枚举提供了亮暗的蒙层特效。具体的特效是让形状选择一个画刷,在画刷上加上特效。...如立体几何 Cube 形状,在 Cube 不同的面有不同的颜色,颜色的亮度不同 接下来通过 OpenXML SDK 实现读取 PPTX 文件,解析 Cube 预设形状,在界面绘制,让填充和 PowerPoint...Test.pptx 可以通过本文末尾拿到下载地址 在开始之前,期望大家已了解如何在 dotnet 应用里面读取 PPT 文件,如果还不了解读取方法,请参阅 C# dotnet 使用 OpenXml 解析...不过通过编写代码的形式也是可以的,详细请看 dotnet OpenXML SDK 形状几何 Geometry 的计算公式含义 为了简化代码,在 GetPresetGeometryPath 方法里面使用的是我用公式引擎计算的输出字符串...,运行代码可以看到上图的效果 本文所有代码和测试文件放在 github 和 gitee 欢迎访问 可以通过如下方式获取本文代码 先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码

    86120

    dotnet OpenXML 继承组合颜色的 GrpFill 属性

    在 OpenXML 的颜色画刷填充,有特殊的填充是 GrpFill 属性,对应 OpenXML SDK 定义的 DocumentFormat.OpenXml.Drawing.GroupFill 类型 本文属于...OpenXML 系列博客,前后文请参阅 Office 使用 OpenXML SDK 解析文档博客目录 在颜色画刷的定义,如形状的填充色,在形状放入到组合里面时,可以让形状的颜色继承组合的颜色。...RGB 的值,因此就截图此时的文档从 PowerPoint 打开的界面,不标注每个矩形的颜色 可以看到左边的矩形采用了 565656 的颜色,而另一个矩形采用自己定义的 F6F656 颜色。...github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码 git init...在 PowerPoint 的行为是此元素将丢失填充色,相当于没有填充 如以下的文档内容,有一个形状使用了 grpFill 但是没有放在组合里面

    59050

    C# SQLite在C#中的安装与操作

    SQLite 介绍 SQLite,是一款轻型的数据库,用于本地的数据储存。...先说说优点,它占用资源非常的低,在嵌入式设备中需要几百K的内存就够了;作为轻量级数据库,他的处理速度也足够快;支持的的容量级别为T级;独立: 没有额外依赖;开源;支持多种语言; 我的用途 在项目开发中,...因为数据库实时数据的同步,需要记录更新时间,系统日志等等数据;当然,你也可以选择写ini和xml等等配置文件来解决,但是都如数据库可读性高不是。 安装 1....引用 .NET 驱动 http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki 这三个文件,在项目中,引用之后就可以进行创建数据库查询数据操作...2.使用vs提供的包管理工具Nuget进行项目引用。 Nuget包管理工具 搜索SQLite安装对应的包,下载完成后就自动在项目中引用了。

    2.7K21
    领券