2011-03-31 103 views
1

錯誤CS0266:不能將類型'object'隱式轉換爲'Microsoft.Office.Interop.Excel.Range'。一個顯式轉換存在(是否缺少強制轉換?)無法將類型'object'隱式轉換爲'Microsoft.Office.Interop.Excel.Range'

請幫助:)

Excel.Application xlApp; 
    Excel.Workbook xlWorkBook; 
    Excel.Worksheet xlWorkSheet; 
    Excel.Range range; 

    xlApp = new Excel.Application(); 
    xlWorkBook = xlApp.Workbooks.Open("C:\\Base.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(3); 

    range= xlWorkSheet.UsedRange.Columns[1,Type.Missing]; 
+1

你試過了range =(Range)xlWorkSheet.UsedRange.Columns [1,Type.Missing]; ? – Damb 2011-03-31 06:45:02

回答

5

Columns索引鍵入返回object和可變range鍵入到Excel.Range。這種轉換是不合法的(一種不太具體的類型到更具體的類型)。您需要顯式轉換的結果進行轉換工作

range = (Excel.Range)(xlWorkSheet.UsedRange.Columns[1,Type.Missing]); 
1

我認爲這個問題是在這一行:

xlWorkSheet.UsedRange.Columns[1,Type.Missing]; 

它可能返回的對象,所以你必須將它轉換爲Excel.Range

1

僅當Microsoft.Office.Interop.Excel的Embed Interop類型設置爲false時纔會出現此異常。如果它被設置爲true,那麼你就不會得到這個異常

0

這將解決這個問題:

Excel.Worksheet xlWorkSheet = (Excel.Worksheet)(xlWorkBook.Worksheets.get_Item(3)); 
Excel.Range range= (Excel.Range)(xlWorkSheet.UsedRange.Columns[1,Type.Missing]); 

剛剛嘗試這一點。希望對你有效。

相關問題