用 C# 通过 AI 将多份文档智能转为 PowerPoint 演示文稿
用 C# 通过 AI 将多份文档智能转为 PowerPoint 演示文稿
使用 C# 和 AI 将文档转为 PowerPoint 演示文稿,并不只是格式转换。一份 30 页的报告变成 10 页幻灯片,中间是有人读完了全文、判断哪 90% 可以舍弃、把剩下的内容重新组织成一条叙事线,再补上视觉设计。这属于编辑层面的综合,传统 PowerPoint 库做不了。
真正值得琢磨的是综合了什么。真实业务里,来源很少是单一文件:一份季度业务复盘要同时用到 Excel 工作簿里的数字、Word 报告里的叙述,以及 PDF 发票里的那张签字件。AI 文档 Agent 的价值不在”把一个 .docx 转成 .pptx“,而在”把这三份都读一遍,给我一份能串起它们的演示文稿”。本文用 Spire.Agent.Office 在 C# 里演示最直接的做法:把全部文档作为附件、配一条自然语言指令,一次调用生成演示文稿。
快速导航
1. 一条指令,多种来源
传统的 Spire.Office 代码把每种格式当成一座孤岛。要用一份 Word 报告加一张 Excel 表格做演示文稿,你得:
- 用
Spire.Doc打开.docx,挑出想要的文字。 - 用
Spire.XLS读取工作簿、算出数字。 - 来源是 PDF 时再上
Spire.Pdf。 - 用
Spire.Presentation逐页建幻灯片、摆放每个文本框和图表、手动算版式。
四套 API、每种格式一套解析器,外加一个手写版式引擎。文档结构一变,代码就崩。
Spire.Agent.Office 把这一整套压成一条指令。你把所有来源文件交给 Agent,告诉它这份演示文稿要讲什么故事。Agent 逐份读懂格式、判断跨文档的重点、直接产出幻灯片,没有一行手写版式代码。
心智模型只有一步:
不用为每种格式写解析器,让 Agent 读遍所有文件、直接生成演示文稿即可。一次调用、一条指令、一个 .pptx 文件。
2. 你需要准备什么
- .NET 6+(示例面向
net10.0)。 - `Spire.Agent.Office` NuGet 包。它会传递依赖带出
Spire.Doc、Spire.Pdf、Spire.XLS、Spire.Presentation,无需单独安装。 - 一个
SpireToken(Spire.Agent.Office 的 API Key)。Agent 需要访问 AI 服务,所以真正生成时必须填有效 Token。 - 命名空间引用:
1 | using Spire.Agent.Office.AI; // AIOptions、AIDocumentProcessor、AIResult |
3. 极简方案:一次调用,一份演示文稿
核心思路简单到极致:把所有来源文档作为附件传进去,写一句自然语言指令,让 Agent 在一次 ExecuteInstruction 调用里完成阅读、理解、综合和排版。
1 | string[] sources = new[] |
整个方案就是:一次方法调用、一条指令字符串。没有按格式写的解析器、没有中间文件、没有手写版式代码。Agent 读懂每种格式、判断跨文档的重点,直接把演示文稿写到 savePath。
真正让这件事跑起来的是 autonomousOutput: true:它告诉 Agent 可以自行写文件(包括最终的 .pptx),不必每步都来问确认。maxTurns 传 null(或一个较大的数),给 Agent 留够执行步数。
4. 实战示例:Word + PDF + Excel 合成一份演示文稿
下面是完整程序。指向一个文件或一个目录,它就会在一次 AI 调用里生成演示文稿:
1 | using System; |
整个程序就这些。除了 Agent 调用本身,剩下的唯一代码是 ResolveInputs,它只负责决定把哪些文件作为附件,既不读取也不解析文档内容。指令里唯一描述”设计”的是主题、页数和重点;阅读、取舍、排版都交给 Agent。
一次调用,五页幻灯片。上面这段程序生成的结果:
5. 底层原理
AIDocumentProcessor通过ppt.AI(options)从Presentation取得。Presentation就是 Agent 绘制幻灯片的画布。AIOptions承载配置:SpireToken(你的 Key)与TimeoutMs(真实文档要调大,大文档的 AI 分析很耗时)。ExecuteInstruction驱动 Agent。传入Presentation、自然语言instruction、输出.pptx的savePath,以及string[]来源文件路径(Word、PDF、Excel、Markdown 任意混搭)。autonomousOutput: true表示 Agent 可以自行写文件,包括最终的演示文稿,不必每步确认。它返回AIResult,含Success、ErrorMessage和OutputFiles(Agent 创建的全部文件)。maxTurns控制 Agent 允许的步数。传null表示不限,也可以给一个大数(例如80)应对文档较多的情况。GeneratePresentation(sourcePath, instruction, savePath)是只有一份来源文档时的专用快捷方法,返回PPTGenerationResult(Success、GeneratedPages、TotalPages、OutputPath、ErrorMessage),而不是AIResult。它的sourcePath只接受单个文件,这正是本文采用多附件ExecuteInstruction路径的原因:只有这条路能让一份演示文稿在单次调用里取材于多份来源。
为什么不先合并成 Markdown? 可以,见第 6 节变体 B。但多数场景下,单次调用更简单、更快,结果一样。中间那份 Markdown 只在你想在花 Token 生成演示文稿之前先检查、编辑合并内容时才有用。
6. 精确控制
上面的做法刻意保持极简。需要更多掌控时,下面这些变体都建立在同一次 ExecuteInstruction 调用之上。
调指令。 演示文稿的结构、页数、主题、图表,全部由指令字符串决定。写明确一些:
1 | // 例如指定页数、主题色,以及某一页放一张图表 |
变体 A:自己逐份摘要(更可控)。 如果你更愿意给每份文档单独下指令,而不是信任一条跨文档指令,可以循环 SummarizeDocument,它把单个文件的 Agent 摘要以 string 返回:
1 | var sb = new StringBuilder(); |
然后把这份合并 Markdown 作为唯一来源传给 ExecuteInstruction。这样你能拿到逐份文档的摘要,生成前就可以阅读和修改。
变体 B:先合并成 Markdown,再生成(两步)。 需要一份可检查的中间文件时,把工作拆成两次调用。第 1 步用 ExecuteInstruction 的自主模式把所有来源合并成一个 Markdown 文件;第 2 步把这份 Markdown 交给 ExecuteInstruction 生成演示文稿:
1 | // 第 1 步:把所有文档合并成一个 Markdown 文件 |
取舍:变体 B 多出一份可检查的中间 Markdown,调试、或者需要人工复核合并内容时很有用。第 3 节的单次调用是推荐默认,因为更简单也更快。
延伸推荐:在 .NET 中用 AI 智能体自动化发票处理,同样是“把一批文档交给智能体、直接拿回成品文件”的生成工作流。
7. 读回并校验结果
生成之后,重新打开演示文稿,在程序里校验:
1 | using (Presentation deck = new Presentation()) |
这里也是人工复核的落点:加载生成好的演示文稿、检查标题,发现不对就回头精炼指令。
8. 常见问题
生成的页数不对。
来源文档较大时,分析可能超过默认超时,Agent 提前停下。把 AIOptions.TimeoutMs 调大(例如 1000000,约 17 分钟),并在指令里写明页数区间,例如”最终演示文稿控制在 8 到 12 页”。
Agent 漏掉了某份文档的内容。
复杂文档可能让单次处理跑偏。在指令里点名要的内容(”包含 Word 报告里的发现””保留 Excel 表格”)。如果仍然不准,改用第 6 节的变体 B,先检查合并出来的 Markdown 再生成。
调用报 “401 Invalid token”。SpireToken 被拒。确认它有效、未过期,并且正确填进了 AIOptions.SpireToken。
多份文档怎么一起传?ExecuteInstruction 的第四个参数接受 string[] 文件路径。把每份来源都传进去,.docx、.pdf、.xlsx、.md 等任意混搭,Agent 会在一次调用里全部读完。只有一份来源时,专用快捷方法是 GeneratePresentation(sourcePath, instruction, savePath);上面这种多附件写法才是让一份演示文稿取材于多份来源的方式。
获取你的 SpireToken Key
联系我们获取试用或商业 API Key,也可以申请临时 License。在代码里这样配置:
1 | AIOptions options = new AIOptions(); |
延伸阅读
- Spire.Agent.Office 产品概览:覆盖 Word、Excel、PowerPoint 与 PDF 的 AI 智能体 SDK
- 集成入门:安装 SDK 并跑通第一条指令
- 由文档生成演示文稿:本文所用演示文稿生成 API 的官方教程
- 批量生成合同:同样的指令驱动模式,用于批量生成文档











