2012-10-04 41 views
1

希望获得关于哪种方法更好的一些意见。我们有一份销售报告,必须以特定的格式生成(直至行颜色和字体)。本地或在服务器上运行Excel自动化

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

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

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

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

+3

在Web服务器上运行Excel将为您的生活带来无尽的苦难。 –

+0

选项2:您的用户可以在本地生成报告,但将模板工作表存储在服务器上,并让生成报告的宏从服务器下载模板作为流程的一部分。如果需要,可以在模板上存储一些信息,并通过宏检查以确保everone正在使用最新版本。 –

+0

有没有可能让Excel从文本文件中读取宏脚本?这样我就可以将最新的代码保存在一个位置。 – ElPresidente

回答

1

至于服务器端:

我非常.. HIGHLY ..建议检查出的电子表格OpenOffice的/ LibreOffice的XML格式。

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

另外这里是试图写入微软的一些其他项目的格式直接:

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

至于客户端:

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

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

1

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

Example Code

然而,随着@whardier在他的回应指出,如果这是一个大规模的或公共的网站,他使建议将是更合适的,也会进一步扩大。

+0

我也在想这件事,但并不确定我是否最终要缓解在ASP.NET中运行它的服务器开销与Excel的实例。 – ElPresidente

相关问题