在C#應用程序中使用Microsoft Excel時,是否有一種優雅/直接的方式,而不受限於特定版本的Microsoft Excel?使用適用於C#應用程序開發的Excel版本
背景...
我在使用VBScript其中使用Microsoft Excel(如果已安裝)來自動生成Excel電子表格的過程中,過去編寫的腳本。 set xl = createObject("Excel.Application")
腳本無縫協同工作,無論哪個版本的Excel安裝在我的經驗/場景(我有Office 365與Excel 2016安裝在我的開發機器上,我的腳本在Microsoft Windows 2008 R2服務器上運行的運行Excel 2010的獨立副本)
我希望逐步進行一些工作,並開始開發完成相同工作的C#應用程序(winforms或控制檯)。我開發了一個測試應用程序,可以使用我的開發機器上安裝的excel版本。我需要的應用程序能夠運行Excel 2010
Project->Add Reference
COM
"Microsoft Excel 16.0 Object Library"
然後添加using語句在Windows Server 2008 R2服務器上運行... using Excel = Microsoft.Office.Interop.Excel;
然後一些基本的winforms測試代碼...
public Form1()
{
InitializeComponent();
SimpleExcelTest();
}
void SimpleExcelTest() {
Excel.Application xl = new Excel.Application();
Excel.Workbook wb = xl.Workbooks.Add();
Excel.Worksheet ws = wb.Worksheets[1];
ws.Cells[1, 1] = "Testing";
wb.SaveAs("C:\\temp\\test.xlsx");
wb.Close();
}
哪個工作正常。
但是這引用了我的機器上運行的特定版本的Excel。這不會在目標機器上運行。該應用程序崩潰,出現以下錯誤...
問題簽名:
問題事件名稱:CLR20r3
問題簽名01:AutomatedReportGenerator.exe
問題簽名02:1.0.0.0
問題簽名03:59552369
問題簽名04:AutomatedReportGenerator
問題簽名05:1.0.0.0
問題簽名06:59552369
問題簽名07:2
問題簽名08:9C
問題簽名09 :PSZQOADHX1U5ZAHBHOHGHLDGIY4QIXHX
OS版本:6.1.7601.2.1.0.272。7
區域設置ID:2057
其他信息1:0a9e
其他信息2:0a9e372d3b4ad19135b953a78882e789
附加信息3:0a9e
附加信息4:0a9e372d3b4ad19135b953a78882e789
編輯:我會放入一個try catch來查看我是否可以捕獲更有用的錯誤消息,並嘗試使用兩個答案建議的庫,然後接受最早的答案。今天晚些時候。
是否有使用Excel在C#應用程序生成電子表格,無論安裝的是哪個的Excel版本的(只要它足夠近以與代碼兼容)
也許替代/更好的辦法C#相當於vbscript的set xl = createObject("Excel.Application")
Excel互操作程序集屬性「Embed Interop Types」是否設置爲True? – PaulF
@PaulF是的。 – MrVimes
我試着搜索問題簽名09,因爲它非常獨特,並提出了幾個結果,包括這個 - 我不知道它是否會有所幫助:https://answers.microsoft.com/en-us/windows/forum/ windows_7-performance-i-am-trying-install-a-program-on-my-windows-7/917f70b9-2915-4662-a7dc-ac997312501b – PaulF