2016-05-18 12 views
0

データテーブルにExcelファイルを読み込む必要があります。 私はこのコードを持っている:私は新しいプロジェクトを作成した場合LoadExcelFileToDatatable(呼び出し、私が使用していたプロジェクトでoledb.12.0プロバイダはローカルマシンに登録されていませんが、一部のアプリケーションでは動作します

 public static DataTable LoadExcelFileToDatatable(string Filename, string SheetName = "Sheet1") 
    { 
     try 
     { 
      string connectionString = System.String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES\";", Filename); 
      string query = System.String.Format("SELECT * from [{0}$]", SheetName); 
      OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString); 
      DataSet dataSet = new DataSet(); 
      dataAdapter.Fill(dataSet); 
      DataTable dt = dataSet.Tables[0]; 

      return dt; 
     } 
     catch (Exception ex) 
     { 

      throw ex; 
     } 
    } 

は)しかし 「oledb.12.0プロバイダはローカルマシンに登録されていない」 がスローされますと、同じメソッドと呼ばれる、それは正常に動作します!ユーザーを選択する必要がある場合 おかげ

答えて

0

は、プロバイダをアンインストールし、再度インストールしてインストール形式の代わりに「ジャスト・ミー」の「みんなのために」を選択

+0

以下を参照してください。。与えられたOPは、両方で同じ方法を述べました。 – BugFinder

0

それはのオフィスのバージョンに依存します。

あなたのプロパティでは、Excel 8.0を使用します。 97-2003形式のみをサポートしています。私は2番目、それは1回のプロジェクトの作業ではなく別のものを作るはずの再インストールしている間

リンク

https://www.connectionstrings.com/excel/

+0

プロバイダは、拡張された小道具で間違ったバージョンを指定した場合、気にしていないようです。また、プロバイダー自体ではなく、拡張された小道具がファイルに使用されます。 – user6144226

+0

返信いただきありがとうございますが、同じExcelファイル(2007)を読み込むために呼び出されたときと同じ機能が動作していますが、テスト用に作成した別のアプリケーションでも同じ機能が動作しています。 –

関連する問題