2016-10-10 3 views
3

Ich muss Daten aus Excel in die Datenbank mit Codierungsanweisungen importieren.
Aber es gibt mir einen Fehler. "Es gibt keine Zeile an Position 0." in Zeile 11.
In der Zwischenzeit, sollte ich meinen Tabellennamen anstelle von "TABLE" in Zeile 8 ersetzen?Importieren von Daten aus Excel in die Datenbank in C#

Unten ist mein Code:

public static DataTable ReadExcelWithoutOffice(string filePath) 
{ 
    var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;TypeGuessRows=0;FirstRowHasNames=true;ImportMixedTypes=Text\""; ; 
    using (var conn = new OleDbConnection(connectionString)) 
    { 
     conn.Open(); 

     var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); 
     using (var cmd = conn.CreateCommand()) 
     { 
      cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] "; 

      var adapter = new OleDbDataAdapter(cmd); 
      var ds = new DataSet(); 
      adapter.Fill(ds); 
      return ds.Tables[0]; 
     } 
    } 
} 
+1

http://stackoverflow.com/questions/14796454/import-excel-sheet-using-jet-oledb-4-0-setting-first-row-as-column-name – A3006

+0

Überprüfen Sie, ob Ihre Abfrage gibt alle Daten zurück und fährt dann mit den nächsten Vorgängen fort. –

+0

Wie viele Blätter sind in Ihrer Excel-Datei vorhanden? Es gibt keine Garantie, dass Sie diese Blätter in der Reihenfolge erhalten, in der Sie sie auf der Excel-Benutzeroberfläche sehen. – Steve

Antwort

1

Danke allen für Ihre Antwort. Ich habe einen anderen Weg gefunden, um mein Problem zu lösen Hier ist mein Code:

  System.Data.OleDb.OleDbConnection MyConnection; 
      System.Data.DataSet DtSet; 
      System.Data.OleDb.OleDbDataAdapter MyCommand; 
      MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\C# Projects\\ex.xlsx';Extended Properties=Excel 8.0;"); 
      MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection); 
      MyCommand.TableMappings.Add("tbl_info", "tbl_info"); 
      DtSet = new System.Data.DataSet(); 
      MyCommand.Fill(DtSet); 
      dgv.DataSource = DtSet.Tables[0]; 
      MyConnection.Close(); 

Quelle: Read and Import Excel File into DataSet

0

prüfen Sie diesen Link aus.

Reading Excel files from C#

Also, es ist so.

Verwenden von Microsoft Jet: Zuerst eine Verbindung erstellen

string Con2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
filename + @";Extended Properties='Excel 12.0;IMEX=1'"; 
System.Data.OleDb.OleDbConnection ExcelConnection = 
new System.Data.OleDb.OleDbConnection(Con2); 

Dann etwas tun, wie ...

DataSet ds = new DataSet(); 

// Create OleDbCommand object and select data from worksheet TABNAME 
OleDbCommand cmd_hulpkostenplaatsen = new OleDbCommand("SELECT * FROM [TABNAME$]", ExcelConnection); 
     OleDbDataAdapter oleda_hulpkostenplaatsen = new OleDbDataAdapter(); 
     oleda_hulpkostenplaatsen.SelectCommand = cmd_hulpkostenplaatsen; 
     oleda_hulpkostenplaatsen.Fill(ds, "HULPKOSTENPLAATSEN"); 

     foreach (DataRow row in ds.Tables["HULPKOSTENPLAATSEN"].Rows) 
     { 
     } 

Dieser Link ist auch hilfreich.

http://www.c-sharpcorner.com/blogs/import-excel-data-to-database-using-c-sharp1

Verwandte Themen