2016-04-08 9 views
0

でファイルを読み込みます。回答する前に投稿の最後までお読みください。私が使用しているコードは次のとおりです。C#のエラーは、Excelは、私がOleDbDataAdapterおよを使用して「の.xlsx」ファイルを読み込むしようとしている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;"); 
    } 

しかし、私は独特のエラーが発生しています。 Excelファイルは、私がクライアントによって私に与えられている照会しており、私は彼らにここ

External table is not in the expected format 

を開こうとすると、私は次のエラーを取得するキャッチです:私は気づいた もしI Excelファイルの1つを開き、を手動で保存してファイルを閉じると、プログラムでファイルをクエリできます。

+1

拡張子にだまされてはいけないようにしてください。あなたがそのコンテンツを読むことができる場合は、テキストエディタでファイルを開き、おそらくCSVファイルではないXLS – Steve

+0

あなたの答えをありがとう。しかし、Notepad ++でファイルを開くと、 ".xlsx"ファイルの本当の内容ではなく、XMLコードが私に与えられます。 –

答えて

0

はあなたがマイクロソフトオフィスを使用してのxlsxファイルを作成する必要があり、よろしいですか?このファイルは開いているXML文書ですが、MS Officeで作成されていない可能性があります。したがって、MS oledbadapterはそれを読み取ることができません。あなたがそれを開いて保存すると、それはおそらくopen xmlのMSバージョンに変換され、次にoledbadapterがそれを読むことができます。

あなたはXLSXファイルを読むためにDocumentFormat.OpenXmlに見ることができます。

関連する問題