6

OleDbAdapterを使用して Excel ファイルの情報にアクセスするアプリケーションを作成しています。ユーザーが別の (関連のない) Excel ファイルをデスクトップで開いている場合に Excel ファイルへの接続を作成しようとすると、アダプターによって接続されているファイルがこのウィンドウに読み取り専用形式で表示されます。ユーザーが Excel のインスタンスを開いていない場合、ファイルは非表示のままになります。

これが私のコードです:

foreach (item app in apps)

{   

   DataTable dt = new DataTable();

   string CnStr = ("Provider=Microsoft.Jet.OLEDB.4.0;" + ("Data Source="
                  + ((app.FilePath) + (";" + "Extended Properties=\"Excel 8.0;\""))));

   string OleDbString = ("Select * from [" + app.SheetName + "$]");                              

   OleDbDataAdapter Adapter = new OleDbDataAdapter();

   var conn = new OleDbConnection(CnStr);
   conn.Open(); <----------------------------This is where the files are being opened.

   var cmd = new OleDbCommand(OleDbString, conn);

   Adapter.SelectCommand = cmd;


   Adapter.Fill(app.DataTable);

   conn.Close();

   Adapter.Dispose();

}

OleDbConnection()Excelのインスタンスが開いている場合はファイルを開くのに、開いていない場合は開かない理由を知っている人はいますか?

4

1 に答える 1

-1

アプリ変数を初期化するコードを投稿する必要があります。おそらく、あなたの質問に対する答えはそこにあります。GetObject または CreateObject メソッドを使用していますか?

于 2012-01-02T19:41:29.527 に答える