在本地或服务器上运行Excel自动化

时间:2012-10-04 17:25:15

标签: excel vba windows-server-2008

想要了解哪种方法更好的做法。我们有一份销售报告,必须以非常特定的格式生成(直到行颜色和字体)。

我已经编写了一个从我们的数据库中提取的宏,并在大约15秒内填充整个工作簿。问题是它应该如何填充?

1)进程服务器端:用户在Intranet页面上发起请求。 ASP.NET打开工作簿模板,执行宏并返回最终工作表。

2)本地处理:用户下载空白模板,从自动连接数据库的桌面运行。

我喜欢第一个,因为我可以强制执行数据的模板,计时,用户和安全性。但是建议在互联网网络服务器上运行Excel自动化吗?我喜欢第二种选择,但我害怕失去标准化,因为模板表开始在公司周围浮动。

2 个答案:

答案 0 :(得分:2)

至于服务器端:

我非常高兴..建议查看电子表格的OpenOffice / LibreOffice XML格式。

您可以在无头模式下使用localc二进制文件将XML文件转换为XLSX或您拥有的内容。我用它来创建PDF文件,而不是使用ReportLab。

此外,还有一些其他项目试图直接写入Microsoft格式:

http://pypi.python.org/pypi/xlrd   http://pypi.python.org/pypi/xlwt

至于客户方:

如果您希望用户仅使用Excel而不使用任何其他电子表格软件,请继续使用ODBC数据源。除非您每次加载时都使用一些有趣的VBScript从HTTP服务器中提取数据,否则必须为每个用户配置ODBC。还可以选择制作一个XLS电子表格,它只是保存数据并将其包含在XLS文档中,这也是服务器和客户端XLS要求。

转到服务器端。使信息易于归档和共享,并且很可能也是多平台的。

答案 1 :(得分:1)

如果您想使用第一个选项,那么您希望避免在服务器上已安装的Excel实例上使用VBA。这是非常耗费资源的,并且不能很好地扩展。相反,如果您正在编写ASP.NET代码,那么您应该尝试使用.NET框架中内置的Microsoft Office Interop功能。应该可以调整现有的VBA代码,使其在ASP.NET下运行并进行一些更改,但最终您将拥有更可靠的产品。

Example Code

然而,正如@whardier在回答中指出的那样,如果这是针对大型或公共网站的,那么他提出的建议将更加合适,并且可以进一步扩展。