2017-06-06 11 views
0

私は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++; 
} 
+0

をLINE-。私はどこかで、 'xlApp'はまだインスタンス化され、使用されていると思います。 – dlatikay

+0

@dlatikay - OleDbCommandを実行するとExcel xlsxファイルが開きます。おそらく私はmyWorksheet文字列でワ​​ークシートを直接参照しているからでしょうか? – lsieting

+0

これを再現することはできませんし、OleDb *だけで接続してExcelを表示するシナリオも考えられません。[インストールする必要はありません](https://stackoverflow.com/a/3971925)/1132334)をコンピュータにインストールします。どちらの場合でも 'ocon.CommandText'の実行時の値は何ですか? – dlatikay

答えて

0

この下にこれらの二つの

lines-
xlApp.DisplayAlerts = false; 
xlApp.Visible = false; 

を追加OleDbConnectionオブジェクトが可視Excelのインスタンスを開いていないだろう

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
+0

@ souvik-ghoush ---これを試しました。 Excelシートは、OleDbCommandによって参照されるときに.xlsxファイルを開きます。ありがとう – lsieting

関連する問題