OleDbConnection()在任何打开的Excel窗口中打开一个Excel文件。 但是,如果没有一个窗口打开,

我正在写一个应用程序使用OleDbAdapter来访问Excel文件中的信息。 如果用户在桌面上打开另一个(不相关的)Excel文件,则尝试创build与Excel文件的连接时,适配器连接的文件将以只读格式在此窗口中打开。 如果用户没有打开Excel的实例,则文件保持隐藏状态。

这是我的代码:

 foreach (item app in apps) { DataTable dt = new DataTable(); string CnStr = ("Provider=Microsoft.Jet.OLEDB.4.0;" + ("Data Source=" + ((app.FilePath) + (";" + "Extended Properties=\"Excel 8.0;\"")))); string OleDbString = ("Select * from [" + app.SheetName + "$]"); OleDbDataAdapter Adapter = new OleDbDataAdapter(); var conn = new OleDbConnection(CnStr); conn.Open(); <----------------------------This is where the files are being opened. var cmd = new OleDbCommand(OleDbString, conn); Adapter.SelectCommand = cmd; Adapter.Fill(app.DataTable); conn.Close(); Adapter.Dispose(); } 

有人知道为什么OleDbConnection()会打开一个文件,如果一个Excel的实例是打开的,但不会如果一个不是?

您应该发布代码来初始化您的应用程序variables。 很可能你的问题的答案就在那里。 它使用GetObject或CreateObject方法吗?