2013-11-22 133 views
1

我有一个excel工作簿。我需要将它显示为一个将自动刷新的HTML页面(比如说每2分钟)。为此,我需要在每张纸上运行计算,然后另存为HTML。稍后我会想出如何在旧版本中交换新的HTML文件。我在Excel中已经有了一个宏,它可以完成所有的计算,然后每2分钟以HTML的形式保存。我所需要做的就是调用该宏未安装excel时运行Excel宏

问题是,所有这些发生的机器都是服务器机器,因此MS Office无法安装。因此我不能使用Excel COM Inter-op。

一个是如果我能写一个.net程序或一个Vb脚本来运行宏。但.net程序总是使用内部操作。

另一种方法是,如果我可以将本书保存为HTML并在HTML本身中运行宏(不知道HTML是否具有VB A代码)。在这里,我还发现我需要Visual Basic编辑器,我不能安装(因为它只带有Excel)。

我不想使用第三方软件。

以上两个程序中的任何一个都可以在给定的条件下执行吗?如果没有,还有没有其他办法?

UPDATE:

一直在寻找到开放的XML的解决方案,并最终发现,开放的XML 2.0不能运行Excel计算作为SDK没有计算引擎。开放XML SDK 2.5有计算引擎吗?

回答

5

简而言之:如果未安装Excel,则无法运行宏。更糟糕的是:您不应该在服务器上安装Excel。不建议也不可能以稳定的方式做到这一点。 我最好的选择是这样的:使用一个可以读取xlsx文件的网络库,例如EPPLUS,并将这个宏“翻译”成为网络,其中EPPLUS库是它的基础。此外,这比Interop(因子10-100)快得多,并且更适合于ASP.NET(例如)的服务器基础结构。

+0

我已经找到EPPlus更早。但我是一个喜欢,如果有某种方式没有使用第三方软件。难道不可能获得一些能够帮助我完成这项工作的excel dll吗? – amaturcoder

+0

@amaturcoder编号 –

+0

看到我的答案,可能会提供一个替代方案,使用Excel工作的共享框,并将服务器用于服务器工作 –

0

您是否考虑将宏作为.NET Managed AddIn放在共享机器上,使用shell命令从服务器执行宏以在共享机器上打开Excel,并在Open上运行宏。

然后,您可以获取宏本身将数据导出为HTML并将页面复制到您的服务器。

正如人们所说的,避免在服务器上安装Office(尽管它在过去做了,这是从来没有建议)

最稳健选择是重新写你的.NET VBA的。 NET Managed AddIn - 那么你可以更好地控制进程,但正如已经指出的那样,不是在服务器上。

+0

棘手的想法:)但我也会避免这种情况,当Excel宏因任何原因挂起或者两个或两个以上的人试图执行宏时会发生什么? –

+0

嗯,是的,但如果宏被编写为.NET管理的AddIn,那么这项工作可能会在单独的线程上执行? –

+0

另外,hopw很多人执行一个宏是一个程序和访问控制的问题,所以不必成为一个问题。如果它是一个.NET Managed AddIn不可能,可以通过线程管理来处理宏挂起。 –

0

感谢您的支持。找到了一种在给定条件下将excel显示为HTML的方法。

只是FYI,我用了一个名为NPOI的项目。它是Java中使用的.net版本的POI。它允许我在不安装excel的情况下打开编辑并保存excel工作簿。加上它是开源的,所以我根据我的要求定制它。

https://npoi.codeplex.com/

https://github.com/tonyqus/npoi