您如何使用 Excel 伺服器端?
客戶希望“啟用 Web”電子表格計算——使用者指定某些單元格的值,然後在其他單元格中顯示結果值。
(他們不想向使用者顯示“類似電子表格”的界面。這不是 UI 問題。)
他們有一個巨大的電子表格,其中有很多很多工作表上的大量計算。但是,最後,只有兩件事很重要——(1)你將數字放在一張紙上的幾個單元格中,以及(2)你從另一張紙上的幾個單元格中得到相應的數字。其餘部分是一個黑匣子。
我想向使用者展示一個 UI 以輸入他們想要的數字,然後我想以程式方式打開 Excel 文件,設置數字,告訴它重新計算,然後讀出結果。
這可能/可取嗎?是否有商業組件使這更容易?我沒有考慮他們的陷阱嗎?
(我知道我可以使用 Office 自動化來執行此操作,但我知道不建議在伺服器端執行此操作,因為它會嘗試在使用者的上下文中執行等)
很多人說我需要在程式碼中重新創建公式。然而,這將是驚人的複雜。
您絕對不想在伺服器端使用互操作,將它用作客戶端的雜物已經夠糟糕的了。
我可以看到兩個選項:
弄清楚電子表格的邏輯。通過使業務邏輯成為已知數量,這可能會使您長期受益,而在短期內,您可能會發現電子表格中實際上存在錯誤(我遇到過使用多年的大量怪物電子表格,結果很簡單它們中的錯誤 - 每個人都認為答案一定是正確的)
評估SpreadSheetGear.NET,它基本上是互操作的替代品,無需 Excel 即可完成所有操作(它在 .NET 中複製了大量 Excel 的非可視邏輯和 IO)
這是可能的,但不建議這樣做(並且官方不支持)。
您可以通過 COM 或 .NET Primary Interop Assemblies 與 Excel 互動,但這是一個客戶端程序。
在伺服器端,沒有可用的顯示器或桌面,任何意外的對話框(例如)都會使您的 Web 應用程序掛起——您的應用程序將表現得不穩定。
此外,將 Excel 程序附加到每個請求並不完全是一種低資源方法。
解決黑匣子並用適當的程式語言重新實現它顯然是更好的選擇(如“更可靠和更快”)。