我在WPF中使用c#。将数据拉入数据表。一切都工作正常,直到我改为使用通过foreach(工作簿中的工作表)循环从工作表中拉出的实际工作表名称。
现在我有了实际的工作表名称并将其包含在我的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和year变量(从Calendar对象的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++;
}
答案 0 :(得分:0)
添加这两行 -
xlApp.DisplayAlerts = false;
xlApp.Visible = false;
在这一行之下 -
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();