错误:
Cannot convert type 'string' to 'object[*,*]'
这是我一直在犯的错误。有人可以给我一些指示,以便我可以避免吗?感谢。
注意:
有趣的是,(object[,])range.get_Value(XL.XlRangeValueDataType.xlRangeValueDefault)
只会在range.Count == 1
时产生此错误。当count等于或大于2时,它工作正常。
示例代码:
object[,] arrValue; //global variable
private string[] createFormulaCollection()
{
ArrayList s = new ArrayList();
try
{
//look at the currently active excel sheet
//iterate through cells (not Null) and find the one contains IES(...)
//save it into the arraylist
//use dictionary to save position and value (position as key)
workbook = Globals.ThisAddIn.Application.ActiveWorkbook;
worksheet = Globals.ThisAddIn.Application.ActiveSheet;
range = worksheet.UsedRange;
MessageBox.Show(range.Count.ToString());
if (range.Count > 1)
{
//need to make sure there are at least 2 "ies" cells before converting to object[,]
arrValue = (object[,])range.get_Value(XL.XlRangeValueDataType.xlRangeValueDefault);
}
else
{
arrValue[1,1] = range.get_Value(XL.XlRangeValueDataType.xlRangeValueDefault); //my try here. seems still got problem though.
}
catch (Exception ex)
{
}
return (string[])s.ToArray(typeof(string));
}
答案 0 :(得分:1)
查找
当range.Count == 1时, range.get_Value(XL.XlRangeValueDataType.xlRangeValueDefault);
将返回一个字符串
这意味着它无法转换为object [,]类型。
然而,当range.Count> 1。
我的解决方法:
单独处理它。所以在我的情况下,我必须首先计算范围对象的数量并相应地处理它们。
if(range.Count > 1)
{
//code...
}
else
{
string singleStrValue = range.get_Value(XL.XlRangeValueDataType.xlRangeValueDefault);
int iRow, iCol;
iRow = range.Row;
iCol = range.Column;
if (!string.IsNullOrEmpty(singleStrValue))
{
//code...
}
}
答案 1 :(得分:0)
是否适用于
(object[,])range.get_Value(System.Reflection.Missing.Value);