Skip to content

C# dotnet 使用 OpenXml 解析 PPT 文件

Updated: at 08:22,Created: at 02:27

在 2013 微软开源了 OpenXml 解析库,在微软的 PPTX 文档,使用的文档格式就是国际规范的 OpenXml 格式。这个格式有很多版本,详细请看百度。因为演示文稿使用的是 OpenXml 在 .NET 开发可以非常简单将 PowerPoint 文档进行解析,大概只需要两句话

解析 PPT 文件不等于显示 PPT 文件,只是可以拿到 PPT 里面的数据

第一步是通过 NuGet 安装 OpenXml 库,这个库支持跨平台,因为只是解析数据

第二步就是传入 PPT 文件解析

using (var presentationDocument = DocumentFormat.OpenXml.Packaging.PresentationDocument.Open("测试.pptx", false))

这样就完成了 PPT 文件的解析,在调试添加断点,可以在局部变量看到 presentationDocument 的内容

这里面的内容就是整个 PPT 的数据,至于这些数据的含义是什么,就需要额外阅读一下文档

下面是一个简单的例子,获取 PPT 文件里面每一页的所有文本

using (var presentationDocument = DocumentFormat.OpenXml.Packaging.PresentationDocument.Open("测试.pptx", false))
{
var presentationPart = presentationDocument.PresentationPart;
var presentation = presentationPart.Presentation;
// 先获取页面
var slideIdList = presentation.SlideIdList;
foreach (var slideId in slideIdList.ChildElements.OfType<SlideId>())
{
// 获取页面内容
SlidePart slidePart = (SlidePart) presentationPart.GetPartById(slideId.RelationshipId);
var slide = slidePart.Slide;
foreach (var paragraph in
slidePart.Slide
.Descendants<DocumentFormat.OpenXml.Drawing.Paragraph>())
{
// 获取段落
// 在 PPT 文本是放在形状里面
foreach (var text in
paragraph.Descendants<DocumentFormat.OpenXml.Drawing.Text>())
{
// 获取段落文本,这样不会添加文本格式
Debug.WriteLine(text.Text);
}
}
}
}

代码放在 github 欢迎小伙伴访问

OfficeDev/Open-XML-SDK: Open XML SDK by Microsoft

Openxml学习 - 标签 - FrankZC - 博客园

Open Xml SDK 引文

官方文档 欢迎使用 Open XML SDK 2.5 for Office

其他语言的解析

scanny/python-pptx: Create Open XML PowerPoint documents in Python

更多请看 Office 使用 OpenXML SDK 解析文档博客目录


知识共享许可协议

原文链接: http://blog.lindexi.com/post/C-dotnet-%E4%BD%BF%E7%94%A8-OpenXml-%E8%A7%A3%E6%9E%90-PPT-%E6%96%87%E4%BB%B6

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。 欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系