业务应用程序开发人员必须经常创建解决方案,以便让所在组织的日常活动实现自动化。这些活动通常涉及处理和操作多个文档中的数据,例如从多个源文档中提取和合并数据;将数据合并到电子邮件中;在文档中搜索和替换内容;在工作簿中重新计算数据;从演示文稿中提取图像等等,诸如此类,不胜枚举。
Microsoft Office 提供了一个功能丰富的 API,开发人员可以使用它来自动化上述各种重复性的任务,从而使这些任务变得更简单。这些解决方案普通桌面用户用起来很顺利,因此开发人员又将它们提升到了一个新的高度:将这些解决方案部署到服务器。这样就形成一个中心点,集中为多个用户解决所有此类重复性工作,而无需人为干预。
将用于完成重复性 Office 任务的解决方案从桌面移植到服务器看起来很简单,实际上并不那么容易。
Microsoft 的 Office 应用程序套件旨在用于桌面计算机环境,即用户登录到一台计算机并坐在它前面。因为安全、性能和可靠性等原因,Office 应用程序不是用于服务器端方案的最佳工具。服务器环境中的 Office 应用程序可能需要人工干预,这对于服务器端解决方案来说并不理想。因此 Microsoft 建议避免使用此类解决方案,如 Microsoft 支持文章“Considerations for server-side Automation of Office”中所述。
然而,从 Office 2007 开始,Office 自动化故事发生了巨大变化。在 Office 2007 中,Microsoft 为要在服务器上开发基于 Office 解决方案的开发人员推出了 Office OpenXML 和 Excel Services。
对于 Office 2010 和 SharePoint 2010,Microsoft 提供了一组名为“应用程序服务”的新组件。这为开发人员提供了用于 Office 自动化解决方案的丰富工具。应用程序服务包括 Excel Services、Word Automation Services、InfoPath Forms Services、PerformancePoint Services 和 Visio Services。您可以在 msdn.microsoft.com/library/ee559367(v=office.14) 了解有关这些服务的详细信息。
在本文中,我们将向您介绍如何使用 Office OpenXML、Word Automation Services 和 SharePoint 建立一个简单的应用程序,将各个独立的状态报告合入一个文档。
状态报告工作流
假设您是一家服务公司的开发人员,公司里的许多项目由不同的团队管理。每周,每个项目经理都会使用一个通用的模板创建周状态报告,并上载到内部 SharePoint 存储库。现在,您的团队经理想要一个包含所有这些周状态报告的合并报告,并且您被选中执行这个要求。
不过,您是幸运的。正如前文所述,现在您的工作变得轻松多了,因为您可以使用 OpenXML 和 Word Automation Services 完成这个要求,所需的工作量大为减少。有了这些技术,您能够开发出前所未有的强大、稳定的解决方案。
让我们先看看这个解决方案。图 1 显示了建议的工作流。在流程的开始,各位项目经理填写状态报告并上载到服务器的 SharePoint 中。然后,团队经理就可以开始合并所有存储在服务器上的报告并生成一个合并的报告。
图 1 生成状态报告的工作流
构建模板
要实现这个解决方案,首先要为所有项目经理提供一个通用模板,用于填写周状态报告。当他们填写完数据后,会把报告上载到 SharePoint 存储库中。这样,星期一的早上,团队经理就能够登录到 SharePoint 网站,启动用于执行以下任务的逻辑:
阅读所有的状态报告文档。
将它们合并为一个报告。
将报告保存到存储库中以便用户访问。
状态报告模板如图 2 中所示(让我们称它为 WeeklyStatusReport.dotx)。正如您所看到的,模板中包含以下字段:标题、日期、项目经理姓名、里程碑和相关数据,还有用于输入有关工作成就、未来计划和问题的文本字段。在本例中,为了简单起见,我们使用了文本字段和日期选取器控件,但您也可以轻松使用下拉列表、复选框或其他各种控件来简化数据输入。
图 2 周状态报告模板