You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET环境下如何提取PowerPoint等文件的标签、标题等元数据并修改标签值

可行实现方案

优先推荐无Office依赖的Open XML方案,适合小工具本地使用,部署门槛低。


方案1:Open XML SDK(推荐)

微软官方开源库,无需本地安装PowerPoint,仅支持.pptx格式文件,无COM对象残留风险。

  • 第一步:安装NuGet包 DocumentFormat.OpenXml 最新稳定版
  • 第二步:遍历目标文件夹下所有.pptx后缀文件
  • 第三步:提取每份PPT所有幻灯片内的文本内容
  • 第四步:统计预设关键词的出现次数,按要求拼接为标签字符串
  • 第五步:写入PPT内置核心属性的Keywords字段,保存文件

极简可运行示例代码

using DocumentFormat.OpenXml.Packaging;
using System.Text.RegularExpressions;

// 按需修改预设关键词列表
var targetKeywords = new List<string> { "ABC", "DEF", "GHI" };
// 按需修改PPT所在文件夹路径
var pptDirectory = @"C:\你的PPT文件夹路径";

foreach (var pptPath in Directory.EnumerateFiles(pptDirectory, "*.pptx", SearchOption.TopDirectoryOnly))
{
    string allText = string.Empty;
    // 可写模式打开PPT文件
    using (var presentationDoc = PresentationDocument.Open(pptPath, true))
    {
        // 提取所有幻灯片普通形状内的文本
        foreach (var slidePart in presentationDoc.PresentationPart.SlideParts)
        {
            var textNodes = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>();
            foreach (var textNode in textNodes)
            {
                allText += textNode.Text + " ";
            }
        }

        // 统计关键词出现次数,示例为不区分大小写,需区分可删除RegexOptions.IgnoreCase参数
        List<string> tagSegments = new List<string>();
        foreach (var kw in targetKeywords)
        {
            int count = Regex.Matches(allText, Regex.Escape(kw), RegexOptions.IgnoreCase).Count;
            tagSegments.Add($"{kw}={count}");
        }

        // 更新标签(关键字)字段
        var coreProperties = presentationDoc.CoreFilePropertiesPart;
        coreProperties.Properties.Keywords = new DocumentFormat.OpenXml.CoreProperties.Keywords(string.Join(", ", tagSegments));
        coreProperties.Properties.Save();
        presentationDoc.Save();
    }
}

补充说明

如果需要统计备注页、SmartArt、母版内的文本,额外增加对应节点的遍历逻辑即可。


方案2:Office Interop(仅需处理.ppt旧格式时使用)

需要本地安装PowerPoint软件,兼容.ppt/.pptx格式,缺点是容易出现COM对象残留导致后台留PowerPoint进程。

  • 第一步:安装NuGet包 Microsoft.Office.Interop.PowerPoint
  • 第二步:后台实例化PowerPoint应用对象,设置Visible = MsoTriState.msoFalse隐藏窗口
  • 第三步:打开每个PPT文件,遍历所有页面提取文本统计关键词次数
  • 第四步:赋值Presentation.BuiltInDocumentProperties("Keywords").Value为拼接好的标签字符串
  • 第五步:保存文件、关闭PPT实例,手动释放所有COM对象避免进程残留

内容的提问来源于stack exchange,提问作者jnrdavo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 21:27:02