OleDbConnection () открывает файл Excel в любом открытом окне Excel.Но нет, если нет открытого окна - PullRequest
6 голосов
/ 22 ноября 2011

Я пишу приложение, которое использует OleDbAdapter для доступа к информации в файле Excel.Когда я пытаюсь создать соединение с файлом Excel, если у пользователя на рабочем столе открыт другой (не связанный) файл 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, но не будет, если он не был открыт?

1 Ответ

0 голосов
/ 02 января 2012

Вы должны опубликовать код для инициализации вашей переменной apps .Скорее всего, ответ на ваш вопрос лежит там.Использует ли он метод GetObject или CreateObject?

...