1

想就哪种方法更好的做法提出一些意见。我们有一个必须以非常特定的格式生成的销售报告(包括行颜色和字体)。

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

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

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

我喜欢第一个,因为我可以强制执行数据的模板、时间、用户和安全性。但是是否推荐在 Internet Web 服务器上运行 Excel 自动化?我喜欢第二种选择,但我担心随着模板表开始在公司各处浮动而失去标准化。

4

2 回答 2

2

至于服务器端:

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

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

或者,这里有一些其他项目尝试直接写入 Microsoft 格式:

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

至于客户端:

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

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

于 2012-10-04T17:34:07.153 回答
1

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

示例代码

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

于 2012-10-04T17:30:41.730 回答