This reads it into a DataTable public void CreateXLSDataTable( String fileName ) { //DataTable tb = new DataTable("XLS"); dtXLS = new DataTable(); Excel.Application ExcelObj = null; ExcelObj = new Excel.Application(); if ( ExcelObj != null ) { Excel.Workbook empBook = ExcelObj.Workbooks.Open(fileName,0,true,5,"","",true, Excel.XlPlatform.xlWindows,"\t",false,false,0,true); Excel.Sheets empSheets = empBook.Worksheets; Excel.Worksheet empSheet = (Excel.Worksheet)empSheets.get_Item(1); bool lineValid = true; int iCount = 1; while ( lineValid ) { iCount++; Excel.Range range = empSheet.get_Range("A"+iCount.ToString(), "X"+iCount.ToString()); System.Array myvalues = (System.Array)range.Cells.Value; string[] strArray = ConvertToStringArray(myvalues); if(strArray[0].Equals("") ) { lineValid = false; continue; } if( iCount != 2 ) { object[] objArray = strArray; dtXLS.Rows.Add(objArray); } else { for(int i=0; i< strArray.Length; i++) { dtXLS.Columns.Add(strArray[i]); } } } } else { Trace.WriteLine("Excel reading Error: could not load the excel file object"); } ExcelObj.Quit(); ExcelObj = null; } private string[] ConvertToStringArray(System.Array values) { string[] theArray = new string[values.Length]; for(int i=1; i<=values.Length; i++ ) { if( values.GetValue(1,i) == null ) theArray[i-1] = ""; else theArray[i-1] = (string)values.GetValue(1,i).ToString().Trim(); } return theArray; } public DataTable XLS { get { return dtXLS; } }