我正在尋找寫一個使用C#的Excel工作表的大型二維數組。如果數組爲500×500,我會用它來寫,這是如下代碼:寫一個大的二維數組到Excel
var startCell = Worksheet.Cells[1, 1];
var endCell = Worksheet.Cells[500, 500];
var writeRange = (Excel.Range)Worksheet.Cells[startCell, endCell;
writeRange.Value = myArray;
我得到一個異常在這條線:
var endCell = Worksheet.Cells[500, 500];
正如任何人誰使用C#和通過COM的Excel可以證明,收到的錯誤信息幾乎沒有用。我認爲問題在於,當我第一次創建工作表時,用於工作表的基礎數據結構的大小不足以索引單元500,500。
有沒有人知道如何達到預期的效果?我希望有一種簡單的方法可以在創建Range之前重新調整底層數據結構的大小。
謝謝。
編輯:錯誤信息是:
{"Exception from HRESULT: 0x800A03EC"}
隨着和Excel -2146827284錯誤代碼。
更新:下面的評論中提供的鏈接暗示了在兼容模式下打開Excel工作表的問題。這似乎是問題所在。如果我在運行我的代碼之前以.xlsx或.xlsm格式保存文檔,這似乎工作。我的問題是,我不能指望我的用戶每次都這樣做。有沒有實現這一目標的方案?是否僅僅是打開文件,檢查擴展名,然後在需要時將其保存爲新格式?
雖然它「非常無用」,但您可以告訴我們您看到的內容會很有趣。也許你有這個問題(http://stackoverflow.com/questions/7099770/hresult-0x800a03ec-on-worksheet-range)? –
請注意,在舊版本的Excel(例如2003)中,您的工作表不能超過256列(最後一個是IV)和65536行,因此它們不能包含500 * 500矩陣而不拆分它 –