批量生成许多办公文档 - 哪种技术最适合?

时间:2013-12-12 13:40:47

标签: c# ms-office visual-studio-2013 documentation-generation

我们将开发必须初始化大型文件夹结构(用于工程项目)的工具,其中包含许多结构化的MS Office文档(Word,Excel)。所以问题是最适合这项任务的MS技术。此任务非常类似于在Web应用程序中构建模板中的静态内容

我甚至在办公室文件中考虑{{CustomTemplateEngine}}。但这肯定是个坏主意......

我知道 VSTO ,但似乎它通常用于使用加载项扩展Office 。我是对的吗?

此外,最好将文档生成模块实现为 Workflow ,并从各种界面调用它。

嗯,欢迎任何建议。

2 个答案:

答案 0 :(得分:1)

对于docx,您可以查看我的演示文稿http://www.slideshare.net/plutext/document-generation-2012osdcsydney,了解方法概述

对于xlsx,请参阅http://office.microsoft.com/en-au/excel-help/overview-of-xml-in-excel-HA010206396.aspx

  

我了解VSTO,但似乎它通常用于扩展Office with Add-Ins。我是对的吗?

正确。从文档生成的角度来看,您可以使用VSTO创建创作工具;这是我在内容控制数据绑定方法中用于创作的技术。

在运行时(批量生成),您可以(并且可以说应该)避免对Word的依赖。这意味着不在运行时组件中使用VSTO。

答案 1 :(得分:0)

通过C#和VB.Net(没有少量烦恼)自动化MS Word,花了几个小时创建一个完全模板化的数据合并工具后,我发现为了批量生成文档,它非常慢< / strong>即可。当您忙于通过代码进行复制,删除和替换时,MS Word会在幕后制作偷偷摸摸的东西。

  • 在范围之前在文档位置执行替换操作可能导致范围不仅改变位置而且改变大小。使用标签层次结构创建数据管理器(就像我一样)将导致管理与其关联的范围的不小的痛苦。
  • Word在其内部搜索和替换的能力实际上已经死了。删除多余的空行(如在地址中)是一个简单的任务,在开放文本中,但在Word中,这是一个严重的苦差事。
  • 从性能角度来看,您正在处理COM自动化和一个总是忙于在您工作时想要做其他事情的应用程序。文字和细节也越大,Word变得越慢。
  • 最后从部署角度来看,谁希望在其服务器上安装MS Word或尝试确保将客户端作为Word的正确(或完整)安装?

在完成围绕Word构建的完整模板处理系统之后,我发现我可以加载文档并尝试在Word自身崩溃在69页主/详细文档之前的3小时内生成3,700个左右的PDF。在没有崩溃的情况下,我可以在真实文档上每秒获得大约2个文档。

Picture of WordMerge Tool

将此与我在网上找到的商业图书馆进行对比。我能够在2天内将我的代码转换为使用库。速度提升非常出色 - 在令人印象深刻的三页主页/详细信息上有大约20个文档,包括页眉,页脚,页码等.3小时后崩溃Word的相同输入在5分钟内通过商业图书馆航行 - 包括69页面文档。我还获得了创建一个大文档(轻松)而不是数千个单独文档的能力。

总的来说,我要说的是,如果您是出于商业目的这样做,而且您的文档数量很少,您的功能列表很简单,而且您不介意处理Word Quirks然后再使用Word在Word中创建文档,并围绕一个可靠的商业库构建您的应用程序。

作为最后的手段,您可以在Word或Google文档中构建文档,并使用众多基于服务的服务之一来批量创建和通过电子邮件发送文档。