如何将Excel范围转换为List <String>?

我想从一个Excel范围的数据可以混合types(string,双打等)的string列表。 我试着用这个:

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' 

我怎样才能将这个对象数组转换成我想要的列表?

强制转换不会隐式转换为string,但可以在每个对象上调用ToString

 List<string> lst = cellValues.Cast<object>().Select(o => o.ToString()).ToList(); 

首先,您应该投射object来创buildobject列表,之后您应该使用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; }