阻止在OLEDBCommand查询上打开Excel工作表

时间:2017-06-06 15:43:22

标签: c# wpf excel oledbcommand

我在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++;
}

1 个答案:

答案 0 :(得分:0)

添加这两行 -

xlApp.DisplayAlerts = false;
xlApp.Visible = false;

在这一行之下 -

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