2013-11-22 140 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