2016-03-22 10 views
0

Ich konvertiere CSV-Datei in Datentabelle wie unten.Wie konvertieren CSV zu Datentabelle in C#, mvc

string header = isFirstRowHeader ? "Yes" : "No"; 
      string itinerarycsvfilePath = Path.GetDirectoryName(@"D:\projects\MSC cruise\MSCCruiseProjects\MsccruiseWithLogin\MsccruiseWithLogin\UnzippedFiles\itinff_gbr_eng.csv"); 
      string filename = Path.GetFileName(@"D:\projects\MSC cruise\MSCCruiseProjects\MsccruiseWithLogin\MsccruiseWithLogin\UnzippedFiles\itinff_gbr_eng.csv"); 
      string sql = @"SELECT * FROM [" + filename + "]"; 

      using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + itinerarycsvfilePath + 
       ";Extended Properties=\"Text;HDR=" + header + "\"")) 
      using (OleDbCommand command = new OleDbCommand(sql, connection)) 
      using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) 
      { 
       DataTable dataTable = new DataTable("ItineraryDetails"); 
       dataTable.Locale = CultureInfo.CurrentCulture; 
       adapter.Fill(dataTable); 
       return dataTable; 
      } 

dann das Ergebnis, wenn ich sehe mit Schnell Uhr enter image description here

  • Bin ich etwas zu tun wrong.I so fühlen, weil Tisch wie Spalten nicht. was kann ich dafür tun. hoffe deine Hilfe.

Antwort

0

Siehe Code unten

public class CSVReader 
    { 

     public DataSet ReadCSVFile(string fullPath, bool headerRow) 
     { 

      string path = fullPath.Substring(0, fullPath.LastIndexOf("\\") + 1); 
      string filename = fullPath.Substring(fullPath.LastIndexOf("\\") + 1); 
      DataSet ds = new DataSet(); 

      try 
      { 
       if (File.Exists(fullPath)) 
       { 
        string ConStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}" + ";Extended Properties=\"Text;HDR={1};FMT=Delimited\\\"", path, headerRow ? "Yes" : "No"); 
        string SQL = string.Format("SELECT * FROM {0}", filename); 
        OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, ConStr); 
        adapter.Fill(ds, "TextFile"); 
        ds.Tables[0].TableName = "Table1"; 
       } 
       foreach (DataColumn col in ds.Tables["Table1"].Columns) 
       { 
        col.ColumnName = col.ColumnName.Replace(" ", "_"); 
       } 
      } 

      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      return ds; 
     } 
    } 
+0

nett, ich von meinem Code, um das gleiche Ergebnis bekam fragen also.I'm warum es bedeutet, wie ein table.that nicht zeigen, mit Zeilen und Spalten @jdweng – bill

+0

Mit Quick watch müssen Sie sich DataTable - Rows ansehen. Sie haben db in watch, das sind die Daten, die von OleDbAdapter zurückgegeben werden. Nie mit der Uhr benutzt. – jdweng

+0

also was kann ich tun @jdweng – bill