防止 Excel sheet 打开 OLEDBCommand 查询
prevent Excel sheet opening on OLEDBCommand query
我正在 WPF 中使用 C#。将数据拉入数据表。一切正常,直到我改为使用通过 foreach(worksheet in workbook)循环从 sheet 中提取的实际 worksheet 名称。
现在我有了实际作品sheet 名称并将其包含在我的 OLEDbCommand 中,作品sheet 在屏幕上打开。
我不想 prevent/stop 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 方法中创建)恢复到注释掉的行,则 spreadsheet 不会打开。
以下是访问和创建实际工作列表的代码sheet我用来填充组合框下拉列表的代码。
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++;
}
添加这两行-
xlApp.DisplayAlerts = false;
xlApp.Visible = false;
这条线以下-
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
我正在 WPF 中使用 C#。将数据拉入数据表。一切正常,直到我改为使用通过 foreach(worksheet in workbook)循环从 sheet 中提取的实际 worksheet 名称。
现在我有了实际作品sheet 名称并将其包含在我的 OLEDbCommand 中,作品sheet 在屏幕上打开。
我不想 prevent/stop 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 方法中创建)恢复到注释掉的行,则 spreadsheet 不会打开。
以下是访问和创建实际工作列表的代码sheet我用来填充组合框下拉列表的代码。
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++;
}
添加这两行-
xlApp.DisplayAlerts = false;
xlApp.Visible = false;
这条线以下-
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();