I have experimented with LinqToExcel to read CSV files.
SheetNames are not defined with a CSV file. The var sheetNames has a length of 0 after invoking the GetWorkSheetNames.
No column names are returned. You need to access the fields returned through their ordinal number.
If the csv file has a header row, use the _excel.Worksheet() command instead of the WorksheetNoHeader command. This will bypass the first row.
The WorksheetNoHeader returns the first row as data.
public void TestClaimsExcelToXml()
{
var fileName = @"c:\test.csv";
var _excelFile = new ExcelQueryFactory(fileName);
var sheetnames = _excelFile.GetWorksheetNames();
_excelFile.TrimSpaces=TrimSpacesType.Both;
var csvRows = from a in _excelFile.WorksheetNoHeader()
select a;
var _csvRows = csvRows.ToList();
var output = (from myLine in _csvRows
select (myLine[0] + "**" + myLine[1] + "**" + myLine[2] + "**" + myLine[3])).ToList();
var alllines = string.Join(Environment.NewLine, output);
StringBuilder sb = new StringBuilder();
foreach (var myLine in _csvRows)
{
sb.Length = 0;
sb.Append("column 0:");
sb.Append(myLine[0]);
sb.Append(" *** ");
sb.Append("column 1:");
sb.Append(myLine[1]);
sb.Append(" *** ");
sb.Append("column 2:");
sb.Append(myLine[2]);
sb.Append(" *** ");
sb.Append("column 3:");
sb.Append(myLine[3]);
var outLine = sb.ToString();
Console.WriteLine(outLine);
}
}