“object”未包含“get_Range”的定義以及HRESULT: 0x800A03EC

        最近在將數據庫裏面的數據導入到Excel時遇到一個問題,剛開始問題是:“object”未包含“get_Range”的定義,後來通過查詢解決後,又出現了HRESULT: 0x800A03EC,下面說一下這兩個bug怎麼解決。

        首先看一下我將數據庫數據存儲到Excle的代碼片段:

Excel._Application execleApplication = new Excel.Application();
Excel._Workbook workbook = excleApplication.Workbooks.Open("1.xlsx");

Excel._Worksheet worksheet = workboot.Worksheets[1];
worksheet.Activate();

//進行數據庫查詢操作
DataTable dataTable = xxxxx;

worksheet.get_Range(worksheet.Cells[1,1],worksheet.Cells[dataTable.Rows.Count,dataTable.Columns.Count]).Value2 = dataTable;

        我使用這段代碼的時候,就會出現“object”未包含“get_Range”,我點擊worksheet進去查看了一下,是有get_Range的,但是它是個返回類型爲Range的interface,因此get_Range都不會直接出現,而是手動敲上去,雖然不會報錯,但其實是沒有這個實現的,因此出現這個錯誤。使用Range就不會出現這個錯誤了:

Excel._Application execleApplication = new Excel.Application();
Excel._Workbook workbook = excleApplication.Workbooks.Open("1.xlsx");

Excel._Worksheet worksheet = workboot.Worksheets[1];
worksheet.Activate();

//進行數據庫查詢操作
DataTable dataTable = xxxxx;

worksheet.Range[worksheet.Cells[1,1],worksheet.Cells[dataTable.Rows.Count,dataTable.Columns.Count1]].Value2 = dataTable;

        現在雖然不出現之前的錯誤,但是出現了HRESULT: 0x800A03EC,這個錯誤的主要原因是數據的下標錯誤,Excel操作的worksheet中下標是從0,0開始計算的,因此出現這樣的異常。應該修改爲:

Excel._Application execleApplication = new Excel.Application();
Excel._Workbook workbook = excleApplication.Workbooks.Open("1.xlsx");

Excel._Worksheet worksheet = workboot.Worksheets[1];
worksheet.Activate();

//進行數據庫查詢操作
DataTable dataTable = xxxxx;

worksheet.Range[worksheet.Cells[0,10,worksheet.Cells[dataTable.Rows.Count,dataTable.Columns.Count1]].Value2 = dataTable;

        經過這樣修改之後,最好程序運行不再出錯,但是還有一個問題,就是最後查看數據發現並沒有數據,經過一番debug之後才發現,這裏的dataTable需要轉換成二維數組才能像現在這樣賦值,寫個方法將dataTable轉換爲二維數組即可進行操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章