1. ホーム
  2. c#

[解決済み】Excel "外部テーブルが期待された形式ではありません。"

2022-01-27 02:33:19

質問

以下のようなコードでExcel(xlsx)ファイルを読み込もうとしています。Excelでファイルを開いていないと、「"External table is not in the expected format."」というエラーが発生します。つまり、C#プログラムからファイルを読み込むには、まずExcelでファイルを開く必要があります。xlsxファイルはネットワーク上の共有にあります。どうすれば、ファイルを開かずに読み込むことができるのでしょうか? ありがとうございます。

string sql = "SELECT * FROM [Sheet1$]";
string excelConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathname + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"";

using (OleDbDataAdapter adaptor = new OleDbDataAdapter(sql, excelConnection)) {
    DataSet ds = new DataSet();
    adaptor.Fill(ds);
}

解決方法は?

外部テーブルが期待された形式ではありません。Microsoft.Jet.OLEDB.4.0 と Extended Properties=Excel 8.0 を使用する接続文字列で Excel 2007 ファイルを使用しようとしたときに発生します。

以下の接続文字列を使用すると、ほとんどの問題が解決するようです。

public static string path = @"C:\src\RedirectApplication\RedirectApplication\301s.xlsx";
public static string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";