私はWPFのC#で作業しています。データをデータテーブルに引き出す。私は実際のワークシート名をforeach(ワークブックのワークブック)ループを介してシートから引っ張ったものに変更するまで、すべてが正常に機能していました。OLEDBCommandクエリでExcelシートが開くのを防ぐ
実際のワークシート名があり、OLEDbCommandに含めると、ワークシートが画面に表示されます。
Excelファイルが必要ないまたは必要でないため、画面上でExcelファイルを開くのを防止または停止したいと考えています。
以下は、コマンドとクエリを持つ接続文字列とtry/catchの先頭です。
string con_string = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fullFilePath + ";Extended Properties='Excel 12.0 Xml;HDR=Yes'";
try
{
OleDbConnection con = new OleDbConnection(con_string);
con.Open();
//OleDbCommand ocon = new OleDbCommand("SELECT * FROM [" + myMonth + " " + year + "$]", con);
OleDbCommand ocon = new OleDbCommand("SELECT * FROM [" + myWorkSheet + "$]", con);
OleDbDataAdapter sda = new OleDbDataAdapter(ocon);
sda.Fill(data);
dGrid.DataContext = data;
}
私は(CalendarオブジェクトからSelectionChangedメソッドで作成)myMonthと年変数を使用してコメントアウトラインに戻す場合は、スプレッドシートが開きません。
以下は、コンボボックスのプルダウンに使用する実際のワークシートのリストにアクセスして作成するコードです。
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelBook = xlApp.Workbooks.Open(fullFilePath);
String[] excelSheets = new String[excelBook.Worksheets.Count];
int i = 0;
foreach (Microsoft.Office.Interop.Excel.Worksheet wSheet in excelBook.Worksheets)
{
excelSheets[i] = wSheet.Name;
cmbBox2.Items.Add(excelSheets[i]);
i++;
}
をLINE-。私はどこかで、 'xlApp'はまだインスタンス化され、使用されていると思います。 – dlatikay
@dlatikay - OleDbCommandを実行するとExcel xlsxファイルが開きます。おそらく私はmyWorksheet文字列でワークシートを直接参照しているからでしょうか? – lsieting
これを再現することはできませんし、OleDb *だけで接続してExcelを表示するシナリオも考えられません。[インストールする必要はありません](https://stackoverflow.com/a/3971925)/1132334)をコンピュータにインストールします。どちらの場合でも 'ocon.CommandText'の実行時の値は何ですか? – dlatikay