Ошибка поставщика ole db excel

I am using excel data import to sql table in my .net application, however i am getting following error while saving the data :

My code :

protected void btnSave_Click(object sender, EventArgs e)
{
    string FileName = lblFileName.Text;
    string Extension = Path.GetExtension(FileName);
    string FolderPath = Server.MapPath (ConfigurationManager.AppSettings["FolderPath"]);
    string CommandText = "";
    switch (Extension)
    {
        case ".xls": //Excel 97-03
            CommandText = "spx_ImportFromExcel03";
            break;
        case ".xlsx": //Excel 07
            CommandText = "spx_ImportFromExcel07";
            break;
    }
    //Read Excel Sheet using Stored Procedure
    //And import the data into Database Table
    String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
    SqlConnection con = new SqlConnection(strConnString);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = CommandText;
    cmd.Parameters.Add("@SheetName", SqlDbType.VarChar).Value = ddlSheets.SelectedItem.Text;
    cmd.Parameters.Add("@FilePath", SqlDbType.VarChar).Value = FolderPath + FileName;
    cmd.Parameters.Add("@HDR", SqlDbType.VarChar).Value = rbHDR.SelectedItem.Text;
    cmd.Parameters.Add("@TableName", SqlDbType.VarChar).Value = txtTable.Text;   
    cmd.Connection = con;
    try
    {
        con.Open();
        object count = cmd.ExecuteNonQuery();
        lblMessage.ForeColor = System.Drawing.Color.Green;
        lblMessage.Text = count.ToString() + " records inserted.";  
    }
    catch (Exception ex)
    {
        lblMessage.ForeColor = System.Drawing.Color.Red;     
        lblMessage.Text = ex.Message;  
    }
    finally
    {
        con.Close();
        con.Dispose();
        Panel1.Visible = true;
        Panel2.Visible = false; 
    }
}  

and i am using connections strings for excel formats in web.config as :

<connectionStrings>
<add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/>
    <add name="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1}'"/>

i could not figure out this error. Can anyone help ?

asked Dec 1, 2012 at 10:14

hitesh.gawhade's user avatar

hitesh.gawhadehitesh.gawhade

3373 gold badges6 silver badges21 bronze badges

To read excel file in c# code you should have microsoft oledb provider.Microsoft.ACE.OLEDB.12.0 provider is needed for reading file having format xlsx and Microsoft.Jet.OLEDB.4.0 is for xls format files.C# code for reading an excel file is shown below.

using System.Data.OleDb;

   OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Filename.xls") + ";Extended Properties=Excel 8.0"); 
            OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", con);
            con.Open(); 
            OleDbDataReader dr = cmd.ExecuteReader(); 
            string col0 = ""; 
            string col1 = ""; 
            string col2 = ""; 
            while (dr.Read()) 
            { 
                col0 =Convert.ToString(dr[ 0]); 
                col1 =Convert.ToString(dr[ 0]); 
                col2 =Convert.ToString(dr[ 0]); 
                /*******************************
               Write Statements to Insert values of each rows into table 
                *********************************/
            } 
                con.Close(); 
            }

answered Dec 1, 2012 at 11:15

sreejithsdev's user avatar

Here is the good article for import data form excel to database.Import Excel to Sql
Do as all instructed at there and you will be successful.

answered Dec 1, 2012 at 10:19

Sagar Upadhyay's user avatar

Sagar UpadhyaySagar Upadhyay

8192 gold badges11 silver badges31 bronze badges

2

I am trying to import Excel sheet into SQL server through SSIS

The file was generated by SQL Server import task from another machine.

but when I try to run it the SSIS on my machine/Server

I get this error

TITLE: Package Validation Error

Package Validation Error

ADDITIONAL INFORMATION:

Error at Data Flow Task 1 [Source — ‘detail_report (4)$’ [53]]: SSIS
Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The
AcquireConnection method call to the connection manager
«SourceConnectionExcel» failed with error code 0xC0209302. There may
be error messages posted before this with more information on why the
AcquireConnection method call failed.

Error at Data Flow Task 1 [SSIS.Pipeline]: Source — ‘detail_report
(4)$’ failed validation and returned error code 0xC020801C.

Error at Data Flow Task 1 [SSIS.Pipeline]: One or more component
failed validation.

Error at Data Flow Task 1: There were errors during task validation.

Error at MobUp02 [Connection manager «SourceConnectionExcel»]: The
requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered.
If the 32-bit driver is not installed, run the package in 64-bit mode.
Error code: 0x00000000. An OLE DB record is available. Source:
«Microsoft OLE DB Service Components» Hresult: 0x80040154
Description: «Class not registered».

Error at MobUp02 [Connection manager «SourceConnectionExcel»]: The
‘Microsoft.ACE.OLEDB.12.0’ provider is not registered on the local
machine. For more information, see
http://go.microsoft.com/fwlink/?LinkId=219816

(Microsoft.DataTransformationServices.VsIntegration)

I googled that and changed Run64bitRuntime to False, yet problem still exist

Anyone know how to fix that??

Как разрешить «Не удалось найти устанавливаемый ISAM». ошибка для поставщика OLE DB «Microsoft.ACE.OLEDB.12.0»

Яндекс.Директ

СМС рассылка без абонплаты!

Решения LoRaWAN для ЖКХ и города

Получите Допуск СРО! Акция — От 55т.р!

Я пытаюсь импортировать данные из файлов Excel 2007 (.xlsx) в SQL Server 2008 с помощью команды T-SQL OpenRowset() с поставщиком OLE DB «Microsoft.ACE.OLEDB.12.0» , и я получаю постоянная ошибка «Не удалось найти устанавливаемый ISAM». Все аппаратные средства 32-разрядные.

[Пересмотрено 1/10/12, чтобы попытаться более резко сосредоточиться на аномалиях)

Следующий оператор T-SQL создает ошибку:

SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,

‘Data Source=C:workTestData.xlsx;Extended Properties=»Excel 12.0 XML;HDR=YES»‘,

‘SELECT * FROM [Sheet1$]’

)

Если я сохраню файл Excel в формате Excel 97-2003 (.xls) и использую более старый поставщик Microsoft.Jet.OLEDB.4.0 для импорта данных, он работает нормально. Это заставляет меня думать, что это не проблема безопасности или другая экологическая проблема.

SELECT * FROM OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’,

‘Excel 8.0;Database=C:workTestData.xls;HDR=YES’,

‘SELECT * FROM [Sheet1$]’

)

Однако, когда я пытаюсь создать файл *.xls с поставщиком Microsoft.ACE.OLEDB.12.0, который должен быть обратно совместим с форматом *.xls, он снова терпит неудачу с той же ошибкой:

SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,

‘Data Source=C:workTestData.xls;Extended Properties=»Excel 8.0;HDR=YES»;’,

‘SELECT * FROM [Sheet1$]’

)

Кроме того, интересно, когда я использую мастер SSMS «Импорт данных…», он отлично работает. Я сохранил вывод мастера импорта данных в виде пакета SSIS и просмотрел файл SSIS, чтобы попытаться выяснить, как он работает, и он успешно использует поставщика Microsoft.ACE.OLEDB.12.0. Это строка соединения из пакета SSIS:

<DTS:Property DTS:Name=»ConnectionString»>

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:workTestData.xlsx;Extended Properties=»Excel 12.0 XML;HDR=YES»;

</DTS:Property>

Я также выполнил соответствующую конфигурацию SQL Server, чтобы разрешить распространенный запрос OPENROWSET:

sp_configure ‘show advanced options’, 1

reconfigure

GO

sp_configure ‘Ad Hoc Distributed Queries’, 1

reconfigure

GO

Если я также установил следующие значения * sp_MSset_oledb_prop * (которые я нашел в сообщении где-нибудь)…

USE [master]

GO

EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’AllowInProcess’, 1

GO

EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’DynamicParameters’, 1

GO

… тогда ошибка изменится на «Unspecified error»:

OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)» returned message «Unspecified error».

Msg 7303, Level 16, State 1, Line 1

Cannot initialize the data source object of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)».

Однако я не уверен, что это ошибка восходящего или нисходящего потока. (Теперь он находит «устанавливаемый ISAM», но впоследствии не работает?)

Я пробовал это с несколькими файлами Excel на двух разных машинах/операционных системах (Windows Server 2003, Windows XP SP3). Обе машины 32-разрядные.

Я также попытался переустановить версии AccessDatabaseEngine.exe для Office 2007 и Office 2010 (http://www.microsoft.com/download/en/details.aspx?id=23734 и http://www.microsoft.com/download/en/details.aspx?id=13255, соответственно), безрезультатно.

Подводя итог:

«Microsoft.Jet.OLEDB.4.0» работает с использованием T-SQL, но «Microsoft.ACE.OLEDB.12.0» этого не делает.

«Microsoft.ACE.OLEDB.12.0» работает с помощью мастера «Импорт данных…» (насколько я могу сказать из сохраненного файла задания SSIS).

Настройка свойств «AllowInProcess» и «DynamicParameters» на «1» изменяет ошибку на «Unspecified error». (Это шаг вперед?!)

Любые мысли?

+18

tsql excel-2007 oledb openrowset isam

Martin_ATS 10 янв. ’12 в 2:48

источник

поделиться

7 ответов

ПОПРОБУЙТЕ это, это может вам помочь:

установите path и strFileType согласно требованию

string connString = «»;

// string strFileType = Path.GetExtension(UpfileName.FileName).ToLower();

// string path = UpfileName.PostedFile.FileName;

if (strFileType.Trim() == «.xls»)

{

connString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=» + path + «;Extended Properties=»Excel 8.0;HDR=Yes;IMEX=2″»;

}

else if(strFileType.Trim() == «.xlsx»)

{

connString = «Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + path + «;Extended Properties=»Excel 12.0;HDR=Yes;IMEX=2″»;

}

+1

Sagar R 30 янв. ’14 в 9:42

источник

поделиться

Хай также столкнулся с такой ситуацией, я решил ее

решаемые

string ConeectionString = String.Format(@»Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + txtFlp.Text

+ «;Extended Properties=»Excel 12.0 Xml;HDR=YES»»);

OleDbConnection oconn = new OleDbConnection(ConeectionString);</b>

0

user4049619 17 сент. ’14 в 9:03

источник

поделиться

другие ответы

Связанные вопросы

2

Не удалось найти устанавливаемый ISAM. Ошибка сервера в приложении

1

Соединение OLEDB с базой данных Access с паролем: «Не удалось найти устанавливаемый ISAM»

0

сохраняйте это исключение System.Data.OleDb.OleDbException(0x80004005) :?

0

VB.NET Microsoft.ACE.OLEDB.12.0 — Выберите команду col

Похожие вопросы

66

Поставщик Microsoft.ACE.OLEDB.12.0 не зарегистрирован

11

Поставщик Microsoft.ACE.OLEDB.12.0 больше не может открывать .mdb под Windows 8

1

Как узнать причину разрешения поставщика OLE на SQL Server?

1

Агент SQL Server не может выполнить запрос OPENROWSET, но я могу — «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)» сообщила об ошибке

0

Экспорт данных из SQL Server 2014 в Excel

0

Поставщик OLE DB «Microsoft.ACE.OLEDB.12.0» вернул сообщение «Неопределенная ошибка»

0

«Не удалось найти Installable ISAM» С# Exception после чтения xls файла

0

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

0

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

0

не удалось найти устанавливаемый isam [vb.net]

НАКОНЕЦ, решение!

Проверьте это: Msg 7302, уровень 16, состояние 1, строка 1 Невозможно создать экземпляр поставщика OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)»

В принципе, вы переходите к

Панель управления > Администрирование > Службы компонентов

затем разверните

Службы компонентов > Компьютеры > Мой компьютеp > Конфигурация DCOM

находка

MSDAINITIALIZE

перейдите к

Свойствa > Безопасность > Разрешения запуска и активации

нажмите

Настроить > Изменить…

добавьте свое имя пользователя или «все», если вы предпочитаете

отметьте ВСЕ поля «разрешить» для нового пользователя/группы

и нажмите ОК на обеих страницах

Теперь посмотрите, работает ли ваша команда OpenRowSet/OpenDataSource

Благодаря Ramesh Babu Vavilla (vr.babu) с сайта social.technet.microsoft.com для ссылки

0

Hamid Sadeghian 19 мая ’14 в 10:30

источник

поделиться

Это сработало для меня:

SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,

‘Excel 12.0;HDR=NO;Database=C:tempfile.xlsx;’,[sheetname$])

0

Simon Turner 18 июл. ’17 в 11:27

источник

поделиться

Попробуйте это

SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,

‘EXCEL 12.0;DataBase=C:TEMPtest.xlsx;Extended Properties=»EXCEL 12.0 Xml;HDR=YES’, [Sheet1$])

0

Gurm 26 февр. ’13 в 17:01

источник

поделиться

Я думаю, что ответ скрывается в информации о пакете SSIS, которую вы опубликовали. Новый формат файла xlsx хранит данные в формате XML вместо старого. Посмотрите на это снова. Он читает… Расширенные свойства = «Excel 12.0 XML; HDR = YES

Не пропустите этот XML после стандартного материала. (Для чего это стоит, я также прочитал, что вам нужно «Excel 12.0 Macro» для подключения к файлу xslm.)

Попробуй. Странно, но, надеюсь, это работает.

0

IHateScreenNamesToo 27 апр. ’12 в 18:16

источник

поделиться

Я решил с этим запросом:

SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,

‘Excel 12.0;HDR=NO;Database=D:Filename.xlsx;’,

[SheetName$])

Кажется, sql не нравится раздел «Расширенные свойства»…

 

sokol92

Пользователь

Сообщений: 4460
Регистрация: 10.09.2017

#6

02.07.2020 14:50:10

Может быть, источники данных находятся на Вашем личном диске или на сетевом диске, к которому не все пользователи файла из #1 (PQ файл) имеют доступ. Надо выложить все исходные файлы на сетевой ресурс, доступный пользователям PQ файла, и изменить путь к источникам данных в PQ файле.
Зайдите на проблемный компьютер и попробуйте изменить запрос — сразу всё увидите.

Изменено: sokol9202.07.2020 14:56:47

Владимир

Пробовал импортировать Excel файл (расширение .xlsx) согласно инструкции в таблицу MS SQL Server. При нажатии на кнопку «Next» в окне «Choose a Data Source«:

SQL Server Import Wizard - choose a data Source

появляется ошибка:

SQL Server Import Wizard - ошибка OLEDB.12 не зарегистрирован на локальном компьютере

Далее представлю решения для различных версий office Excel:

Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере. (System.Data)

Решение: Необходимо установить офисный системный драйвер AccessDatabaseEngine.exe с официального сайта Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=13255

Поставщик «Microsoft.ACE.OLEDB.15.0» не зарегистрирован на локальном компьютере. (System.Data)

Решение: Необходимо установить офисный системный драйвер AccessDatabaseEngine.exe с официального сайта Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=39358

Поставщик «Microsoft.ACE.OLEDB.16.0» не зарегистрирован на локальном компьютере. (System.Data)

Решение: Необходимо установить офисный системный драйвер AccessDatabaseEngine.exe с официального сайта Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=54920

  • Ошибка поставщик vfpoledb 1 не зарегистрирован на локальном компьютере
  • Ошибка поставщик microsoft ace oledb 12 не зарегистрирован на локальном компьютере
  • Ошибка посредник подключений к удаленному рабочему столу не готов к rpc
  • Ошибка последовательной связи фуджитсу
  • Ошибка последовательного порта usb убедитесь что контроллер подключен попробуйте обновить страницу