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

时间:2014-03-06 20:19:44

标签: c# excel

我想从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'

如何将此对象数组转换为我想要的列表?

2 个答案:

答案 0 :(得分:8)

首先,您应该转换为object来制作对象列表,之后您应该使用ConvertAllmsdn)将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();