Here is a method that relies on using Microsoft.Office.Interop.Excel.
Please Note: The Excel file I used had only one column with data with 50,000 entries.
1) Open the file with Excel, save it as csv, and close Excel.
2) Use StreamReader to quickly read the data.
3) Split the data on carriage return line feed and add it to a string list.
4) Delete the csv file I created.
I used System.Diagnostics.StopWatch to time the execution and it took 1.5568 seconds for the function to run.
public static List<string> ExcelReader( string fileLocation )
{
Microsoft.Office.Interop.Excel.Application excel = new Application();
Microsoft.Office.Interop.Excel.Workbook workBook =
excel.Workbooks.Open(fileLocation);
workBook.SaveAs(
fileLocation + ".csv",
Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows
);
workBook.Close(true);
excel.Quit();
List<string> valueList = null;
using (StreamReader sr = new StreamReader(fileLocation + ".csv")) {
string content = sr.ReadToEnd();
valueList = new List<string>(
content.Split(
new string[] {"\r\n"},
StringSplitOptions.RemoveEmptyEntries
)
);
}
new FileInfo(fileLocation + ".csv").Delete();
return valueList;
}
Resources:
http://www.codeproject.com/Articles/5123/Opening-and-Navigating-Excel-with-C
How to split strings on carriage return with C#?