3

このコードを使用して XML ワークシートを読み取ろうとすると、奇妙な動作が発生します。

string CONNEC_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=No;IMEX=2;\"";
            string fullFilePath = @"C:\Tmp\TestFile.xls";
            using (OleDbConnection objCon = new OleDbConnection(string.Format(CONNEC_STRING, fullFilePath)))
            {
                using (OleDbCommand cm = new OleDbCommand("Select * From [MYCELLSRANGE]", objCon))
                using (OleDbDataAdapter da = new OleDbDataAdapter(cm))
                {
                    DataTable dt = new DataTable();
                    objCon.Open();
                    da.Fill(dt);
                    objCon.Close();
                }
            }

Excel ファイルを閉じると、「外部テーブルが予期された形式ではありません」というエラーが表示されます。ファイルを開いて上記のコードを実行すると、問題なく動作し、MYCELLSRANGE に含まれるデータを読み取ることができます。それで、この問題について誰か考えがありますか?回答ありがとうございます。

4

1 に答える 1

2

これは、Jet Engine が Excel アプリを使用してファイルを解釈するためだと思います。私は一度この問題に遭遇しました。Excel.dll リファレンスを使用し、そこから Excel ファイルを解釈する場合、ファイルを読み取るために新しいアプリケーション インスタンスを作成する必要があります。Jet はまさにこれを実行してデータを取得します。代わりにそのコードを使用することをお勧めします。

さらにサポートが必要な場合は、お知らせください。私のさまざまなアプリケーションでVB.NETでこれを成功させました。

于 2010-09-07T17:11:57.157 に答える