2009-09-22 8 views
2

для запроса листа первенствовать через SQL, я имел обыкновение использовать:Диагностирование исключения OLEDB, когда Quering Excel 2010

Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties=""Excel 8.0;IMEX=1;HDR=YES;""" 

или

Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + strPath + ";Extended Properties=""Excel 12.0;IMEX=1;HDR=YES;""" 

Теперь это работало хорошо, пока я не установил Office 2010.

Теперь я получаю

mıcr Поставщик osoft.Ace.OLEDB.12.0 на этом компьютере не зарегистрирован исключение.

Как я могу узнать правильную строку подключения/поставщика?

ответ

7

Я считаю, для Excel 2010 это:

Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=D:\\MyDocs\\oledb.xlsx;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:Engine Type=37" 

Это, кажется, работает в моей визуальной студии, я получил Excel для создания строки запроса и имел дополнительный элемент в нем.

+0

уже пробовал, не работает ... –

+0

обновлял его - оно не работает на мой либо, новый делает – JDunkerley

+0

Я столкнулся с этой же ситуацией сегодня, и ваш ответ был очень полезен –

2

Я скачал и установил Office System Driver: Компоненты подключения данных в соответствии с рекомендациями выше - и ниже код работал:

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source=d:\\Sample.xlsx;Mode=Share Deny Write;Extended Properties=\"HDR=YES;\";Jet OLEDB:Engine Type=37"; 

    OleDbConnection connection = new OleDbConnection(connectionString); 

    try 
    { 
     connection.Open(); 

     OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", connection); 
     OleDbDataAdapter adapter = new OleDbDataAdapter(); 
     adapter.SelectCommand = command; 

     DataSet ds = new DataSet(); 
     adapter.Fill(ds); 

     GridView1.DataSource = ds; 
     GridView1.DataBind(); 

    } 
    catch (Exception) 
    {    
     //throw; 
    } 
    finally 
    { 
     connection.Close(); 
    } 
+0

Почему у меня нет никаких результатов. Однако это не исключает меня. – Meidi