簡體   English   中英

無法將類型“object”隱式轉換為“object[*,*]”。 存在顯式轉換(您是否缺少演員表)

[英]Cannot implicitly convert type 'object' to 'object[*,*]'. An explicit conversion exists (are you missing a cast)

我需要將 Range 的值賦予多維 object 但發生錯誤:

無法將類型object隱式轉換為object[*,*] 存在顯式轉換(您是否缺少演員表?)

這是代碼:

Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB = oXL.Workbooks.Open(rtbExcelPath.Text.Trim(), Missing.Value, 
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
Missing.Value, Missing.Value, Missing.Value);

Excel.Worksheet oWS = oWB.Worksheets[1] as Excel.Worksheet;

int countRows = oWS.UsedRange.Rows.Count;
int countColumns = oWS.UsedRange.Columns.Count;

object[,] data = oWS.Range[oWS.Cells[1, 1], oWS.Cells[countRows, 
countColumns]].Cells.Value2;

請幫助檢查有什么問題... :(

我能夠通過使用dynamic變量類型而不是顯式類型object[,]來解決您的問題。

dynamic data = oWS.Range[oWS.Cells[1, 1], oWS.Cells[countRows, 
countColumns]].Cells.Value2;

oWS.UsedRange引用單個單元格時會出現該問題。 在這種情況下,返回的 object 是單個值,而不是數組。 如果您想要一個數組,您將需要測試這種情況並顯式創建它。

object[,] data;
if (oWS.UsedRange.Cells.CountLarge == 1)
{
    // create a single cell two dimensional array with 1 based 
    // lower bounds to simular to an array returned by Excel
    data = (object[,])Array.CreateInstance(typeof(object), new[]{1, 1}, new[]{1, 1});
    data[1, 1] = oWS.UsedRange.Value2;
}
else
{
    data = oWS.UsedRange.Value2;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM