我用C#WPF中工作的Excel工作表開幕。將數據拉入數據表。一切工作正常,直到我改變使用通過foreach(工作簿中的工作簿)循環從工作表中拉出的實際工作表名稱。防止OleDbCommand的查詢
現在,我有實際的工作表名稱,包括它在我的OleDbCommand,工作表在屏幕上打開。
我想,以防止/停止從打開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;
}
如果我恢復到使用myMonth和年份變量註釋掉線(從日曆對象selectionChanged方法創建的),電子表格不會打開。
以下是訪問代碼,並創建我用填充ComboBox下拉實際工作表的列表。
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++;
}
的OleDbConnection的不會打開一個可見的Excel實例。我想在某個地方,'xlApp'仍然被實例化和使用。 – dlatikay
@dlatikay - Excel的xlsx檔案,當我執行的OleDbCommand打開。也許是因爲我直接使用myWorksheet字符串引用工作表? – lsieting
我不能重現這一點,也無法想象與OleDb *單獨連接的場景將啓動並顯示Excel ...因爲它[甚至不需要安裝](https://stackoverflow.com/a/3971925/1132334)在計算機上。在兩種情況下,「ocon.CommandText」的運行時值是什麼? – dlatikay