Tuesday, March 29, 2016

LinqToExcel Reading CSV files

     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);
            }

        }

No comments:

Post a Comment