簡體   English   中英

未安裝excel時運行Excel宏

[英]Run Excel macro when excel is not installed

我有一個Excel工作簿。 我需要將其顯示為將自動刷新的HTML頁面(例如每2分鍾刷新一次)。 為此,我需要在每個工作表上運行計算,然后另存為HTML。 稍后,我將弄清楚如何將新的HTML文件替換為舊的HTML文件。 我已經在excel中有了一個宏,可以執行所有計算,然后每2分鍾將其另存為HTML。 我需要做的就是調用那個宏

問題是,要在其上進行所有操作的計算機是服務器計算機,因此無法在其上安裝MS Office。 因此,我無法使用Excel COM Inter-op。

一種是我是否可以編寫將運行宏的.net程序或Vb腳本。 但是.net程序始終使用互操作。

另一種方法是,如果我可以將書另存為HTML並在HTML本身中運行宏(不知道HTML是否具有VBA代碼)。 在這里我也發現我需要無法安裝的Visual Basic編輯器(僅隨Excel附帶)。

我寧願不使用第三方軟件。

是否可以在給定條件下執行以上兩個過程中的任何一個? 如果沒有,還有其他辦法嗎?

更新:

一直在研究開放XML的解決方案,最后發現開放XML 2.0無法運行excel計算,因為SDK沒有計算引擎。 Open XML SDK 2.5是否具有計算引擎?

簡而言之:如果未安裝Excel,則無法運行宏。 更糟:您不應該在服務器上安裝Excel。 不建議也不可能以穩定的方式執行此操作。 我最好的選擇是:使用一個:net庫,它可以讀取xlsx文件(例如EPPLUS),並將此宏“轉換”為net,這是EPPLUS庫的基礎。 而且,這比Interop(系數10-100)要快得多,並且更適合使用ASP.NET的服務器基礎結構(例如)。

您是否考慮過將宏作為共享計算機上的.NET Managed AddIn放置,使用shell命令從服務器執行宏以在共享計算機上打開Excel,並且宏在Open上運行。

然后,您可以獲取宏本身,以將數據導出到HTML並將頁面復制到服務器。

如前所述,避免在服務器上安裝Office(盡管過去已經做到了,但絕對不建議這樣做)

最可靠的選擇是將.NET中的vba重新編寫為.NET托管加載項-這樣,您就可以更好地控制進程,但正如前面指出的那樣,而不是在服務器上。

感謝您的共鳴。 找到了一種在給定條件下將Excel表現為HTML的方法。

僅供參考,我使用了一個稱為NPOI的項目。 它是Java中使用的POI的.net版本。 它使我無需安裝excel就可以打開編輯並保存excel工作簿。 加上它是開源的,所以我根據我的要求對其進行了定制。

https://npoi.codeplex.com/

https://github.com/tonyqus/npoi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM