我想从Excel范围获取字符串列表,其中数据可以是混合类型(字符串,双精度等)。我试过用这个:
List<string> rangeToList(Excel.Range inputRng)
{
object[,] cellValues = (object[,])inputRng.Value2;
List<string> lst = cellValues.Cast<string>().ToList();
return lst;
}
但Cast<string>
行会返回此错误:
Unable to cast object of type 'System.Double' to type 'System.String'
如何将此对象数组转换为我想要的列表?
答案 0 :(得分:8)
首先,您应该转换为object
来制作对象列表,之后您应该使用ConvertAll
(msdn)将object
转换为string
。
List<string> rangeToList(Microsoft.Office.Interop.Excel.Range inputRng)
{
object[,] cellValues = (object[,])inputRng.Value2;
List<string> lst = cellValues.Cast<object>().ToList().ConvertAll(x=> Convert.ToString(x));
return lst;
}
答案 1 :(得分:6)
Cast不会隐式转换为字符串,但您可以在每个对象上调用ToString
:
List<string> lst = cellValues.Cast<object>().Select(o => o.ToString()).ToList();