Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
408 views
in Technique[技术] by (71.8m points)

c# - How to convert an Excel range to a List<String>?

I'd like to get a list of strings from an Excel range where the data could be mixed types (strings, doubles, etc.). I tried using this:

List<string> rangeToList(Excel.Range inputRng)
    {
        object[,] cellValues = (object[,])inputRng.Value2;
        List<string> lst = cellValues.Cast<string>().ToList();
        return lst;
    }

But the line with Cast<string> returns this error:

Unable to cast object of type 'System.Double' to type 'System.String'

How can I convert this array of objects into my desired list?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

First you should cast to object to make list of object and after that you should use ConvertAll (msdn) to convert object to 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;
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...