在 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 2.5 for Office
其他语言的解析
scanny/python-pptx: Create Open XML PowerPoint documents in Python
本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/C-dotnet-%E4%BD%BF%E7%94%A8-OpenXml-%E8%A7%A3%E6%9E%90-PPT-%E6%96%87%E4%BB%B6.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。