0

我的任务是使用 C# 在服务器上生成 PowerPoint 文件的功能。我基本上从一个模板开始,并以编程方式用数据库中的实时数据替换一些文本。在过去的一天里,我一直在对这个领域进行一些研究,这就是我发现的:

PowerPoint 内置了这种东西,这意味着它可以连接到外部数据源并提取数据。我发现,这方面的大多数示例要么使用在服务器上完成的 PowerPoint 自动化(有人建议我不要这样做),要么假设使用 SQL Server 后端。我们公司使用 Oracle 来满足我们的 RDMS 需求。Oracle 对此有一个称为 Oracle BI 的解决方案,但它需要一个全新的 Web 服务器设置来运行各种 Java EE 组件等等。我没有看价格,但知道甲骨文并不便宜。它还需要在最终用户的机器上安装新软件,这是我们真正想要避免的。

可以动态生成 PowerPoint 文件。基本上是解决这个问题的公司(每个帮助论坛都指向他们,他们得到了所有好评)是Aspose。它们具有 .NET 组件,可用于处理您能想到的几乎任何 Office 格式。问题是,它们非常昂贵。仅 PowerPoint 组件(最多 10 名开发人员的站点许可)将花费 3,995 美元。

第三种可能性是在内部生成解决方案。毕竟,PPTX 文件只是 xml,对吧?好吧,仔细看,PPTX 似乎是一个 gzip 存档。它包含许多文件夹,每个文件夹都包含许多 XML 文件。如果我错了,修改 PPTX 文件需要将文件解压缩到临时目录,读取 XML 文件并修改内容,然后再次打包所有内容并将文件写入响应流。也许有些库可以在不提取所有内容的情况下即时处理 gzip 流。

我的问题:是否有更简单的方法来使用 .NET 来处理 PPTX 文件,而无需处理压缩的 XML 文件或购买非常昂贵的软件?基本上,我们需要修改PowerPoint 文件,更改一些文本,并允许用户从 Web 服务器下载生成的文件。

4

2 回答 2

4

不要在 Web 服务器上使用 Office 互操作。这是一个全方位的坏主意。

如果您只是为不会更改的文件替换文本占位符,那么在 gzip 存档中的 xml 文件中找到占位符的本地解决方案应该是可行的。.Net 对 zip 的支持已经有一段时间了,如果您能够使用 .Net 4.5,它会得到很大的改进,因此您根本不需要将存档解压缩到临时位置。

PowerPoint 还应该支持直接连接到 Oracle,就像它支持连接到 Sql Server 一样(只是使用连接选项),而不需要特殊的 Oracle BI 东西。但是,我仍然更喜欢本土解决方案,因为这仅在 powerpoint 文件能够直接访问您的数据库时才有效,这通常只能在您的本地 LAN 环境或使用活动的 VPN 中实现。

如果您想要比简单的文本替换更高级的东西,也许可以寻找 Aspose 的竞争对手。

于 2013-11-13T17:55:12.150 回答
4

OpenXML是 Microsoft 的 .Net 库,可让您操作 Office 文档。它允许您打开 PPTX 文件并提供包装 XML 内容的对象模型。

这是OpenXML SDKMSDN 文档的链接。

我使用 OpenXML 让 ASP.Net 页面从数据库动态生成 W​​ord 文档。

于 2013-11-13T17:57:38.773 回答