Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере - PullRequest
363 голосов
/ 11 июля 2011

Я пытаюсь получить данные из файла Excel по событию нажатия кнопки.Моя строка подключения:

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

Когда я нажимаю на кнопку, появляется следующая ошибка:

Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрированна локальной машине.

Понятия не имею, как это исправить.Моя операционная система - Windows 7.

Ответы [ 33 ]

0 голосов
/ 12 сентября 2017

Я получил эту ошибку при импорте данных из файла Excel в MS-SQL. Поставщик уже был установлен (64-разрядный), и это удивило меня, почему он не работал. Поэтому все, что я сделал, это нашел приложение Import / Export, используемое здесь, то есть .EXE. И я нашел это в

C: \ Program Files \ Microsoft SQL Server \ 130 \ DTS \ Binn \ DTSWizard.exe

Затем я запустил .exe напрямую, чтобы выполнить импорт данных. И это сработало!

0 голосов
/ 30 апреля 2013

// Чтение файла .xls

string strConnection = "";<br/>

string FileName = Server.MapPath("Student.xls");

strConnection = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties='Excel 8.0; HDR=Yes;IMEX=1;'";<br/>

try
{
    OleDbConnection conn1 = new OleDbConnection(strConnection);
    conn1.Open();
    DataTable dt = new DataTable();
    dt = conn1.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });

    Object sheetName = dt.Rows[0]["TABLE_NAME"];
    dt.Clear();
    dt.Columns.Clear();
    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + sheetName.ToString() + "]", conn1);
    da.TableMappings.Add("Table", "0");
    da.Fill(dt);

    for (int i = 0; i < dt.Rows.Count; i++)
    {
        string ID = dt.Rows[i][0].ToString();
        string Name = dt.Rows[i][1].ToString();
        string City = dt.Rows[i][2].ToString();
        string Marks = dt.Rows[i][3].ToString();
    }
    conn1.Close();
}
catch
{
    throw;
}
//To Read xlsx file use following code
string strConnection = "";  <br/>
string FileName = Server.MapPath("Student.xlsx"); <br/>
strConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0 Xml;HDR={1};IMEX=1;'";<br/>

try
{
    OleDbConnection conn1 = new OleDbConnection(strConnection);
    conn1.Open();

    DataTable dt = new DataTable();
    dt = conn1.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });

    Object sheetName = dt.Rows[0]["TABLE_NAME"];
    dt.Clear();
    dt.Columns.Clear();
    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + sheetName.ToString() + "]", conn1);
    da.TableMappings.Add("Table", "0");
    da.Fill(dt);
    //int idx=0;
    //int j=0;
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        string ID = dt.Rows[i][0].ToString();
        string Name = dt.Rows[i][1].ToString();
        string City = dt.Rows[i][2].ToString();
        string Marks = dt.Rows[i][3].ToString();
    }

    conn1.Close();
}
catch
{
    throw;
}

// Теперь устанавливаем AccessDatabaseEngine.exe из "http://www.microsoft.com/en-us/download/confirmation.aspx?id=23734" ссылка

Будет работать 100%

0 голосов
/ 12 апреля 2015

Это зависит от того, какой офис вы установили. Если у вас есть 64-разрядная версия Office, то вы должны скомпилировать приложение как x64, чтобы оно могло работать, поэтому если вы хотите, чтобы оно работало на x36, вы должны установить Office x86, чтобы принять Я перепробовал все решения, описанные выше, но ни одно из них не работало до тех пор, пока я не понял, что у меня офис x64bit, и поэтому я создал приложение под x64 и работал

...