2016-04-08 6 views
0

Ich versuche, eine ".xlsx" -Datei mit einem OleDbDataAdapter zu lesen. Bitte lesen Sie bis zum Ende des Beitrags, bevor Sie antworten. Hier ist der Code, den ich verwende:C# Fehler beim Lesen der Excel-Datei mit OleDbDataAdapter

private DataTable ExtractDataFromFile(string fileName) 
    { 
     DataTable sheetData = new DataTable(); 
     using (OleDbConnection conn = this.returnConnection(fileName)) 
     { 
      try{ 
       conn.Open(); 
       OleDbDataAdapter sheetAdapter = new OleDbDataAdapter("select * from [Sheet1$]", conn); 
       sheetAdapter.Fill(sheetData); 
      } 
      catch(Exception e) 
      { 
       Console.WriteLine(e); 
       Console.ReadLine(); 
      } 
     } 
     return sheetData; 
    } 

    private OleDbConnection returnConnection(string fileName) 
    { 
     return new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=Excel 12.0;"); 
    } 

Aber ich bekomme einen eigenartigen Fehler. Die Excel-Dateien muss ich Abfrage von einem Client, die mir gegeben wurden, und ich bekomme die folgende Fehlermeldung, wenn ich versuche, sie zu öffnen

External table is not in the expected format 

Hier ist der Haken: ich bemerkt habe, dass, wenn ich Öffnen Sie eine der Excel-Dateien und manuell speichern Sie es einmal und schließen Sie die Datei, dann kann ich die Datei mit meinem Programm abfragen!

+1

Versuchen Sie, sich durch die Erweiterung nicht täuschen lassen. Öffnen Sie die Datei in einem Texteditor, wenn Sie den Inhalt lesen können, dann ist vielleicht eine CSV-Datei keine XLS – Steve

+0

Vielen Dank für Ihre Antwort. Das Öffnen der Datei mit Notepad ++ gibt mir jedoch XML-Code und nicht den wahren Inhalt der ".xlsx" -Datei. –

Antwort

0

Sind Sie sicher, Sie haben die xlsx-Datei mit Microsoft Office erstellt? Diese Datei könnte ein offenes xml-Dokument sein, aber möglicherweise nicht von MS Office erstellt, so dass der MS oledbadapter sie nicht lesen kann. Wenn Sie es öffnen und speichern, wird es wahrscheinlich in die MS-Version von open xml konvertiert und oledbadapter kann es lesen.

Sie können in DocumentFormat.OpenXml nachsehen, um xlsx-Dateien zu lesen.