Ошибка поставщика 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 не нравится раздел «Расширенные свойства»…

This guide is designed to give you all of the resources needed to troubleshoot and resolve OLE DB/ODBC exception errors. OLE DB/ODBC is a type of protocol used for connecting to a various data sources such as Microsoft SQL Server and Oracle Database. If a OLE DB/ODBC Exception Error (HRESULT 0x80040E4E) is encountered during this application development process, it can be a both time-consuming and frustrating process to try to fix. Follow the instructions below to quickly and effectively troubleshoot and resolve the Exception Errors.

Overview of OLE DB/ODBC Exception Error

OLE DB/ODBC Exception Error is an error that occurs in the ODBC layer or the OLE DB layer of the Microsoft Data Link (MDL) layer’s stack. It typically appears as HRESULT 0x80040E4E and can be associated with a variety of errors such as:

  • Tried to fetch data from an invalid source
  • Incorrect connection information
  • Invalid or uninitialized parameter values in a query
  • Data conversion errors
  • Timeouts
  • Network issues

In order to properly troubleshoot and resolve the issue, you must first understand the basic components of OLE DB/ODBC, what can cause the Exception Error, and the best ways to identify the root cause.

Troubleshooting & Resolving OLE DB/ODBC Exception Error

1. Gathering Information

Before you can troubleshoot any further, you must first gather information in order to begin to understand what may be causing the Exception Error. Gather the necessary information such as:

  • The application being used
  • The type of database or data source driver being used
  • The type of connection string being used
  • The model of server or environment being used
  • Any recent changes made to the environment
  • The version of the ODBC driver being used

This information can be used to begin to get a better understanding of the environment and the potential causes of the Exception Error.

2. Identifying Potential Causes

Once you have gathered the necessary information, it is time to identify any possible causes of the Exception Error. Some common causes of the Exception Error include:

  • A problem with the ODBC driver being used
  • Invalid connection information
  • Corrupt data being passed to the driver
  • A network issue with any communication between the data source and application

It is important to identify the root cause of the Exception Error in order to properly resolve it.

3. Resolving the Exception Error

Once you have identified the cause of the Exception Error, you can begin to troubleshoot and resolve the issue. Depending on the cause, some common solutions may include:

  • Updating or reinstalling the ODBC driver
  • Verifying the connection information
  • Restarting the server
  • Utilizing a network monitoring tool to check for any network issues
  • Upgrading the version of the server or ODBC Driver
  • Checking for any corrupt data

FAQ

Q1. What is OLE DB/ODBC Exception Error?

A1. OLE DB/ODBC Exception Error is an error that occurs in the ODBC layer or the OLE DB layer of the Microsoft Data Link (MDL) layer’s stack. It typically appears as HRESULT 0x80040E4E and can be associated with a variety of errors such as:

  • Tried to fetch data from an invalid source
  • Incorrect connection information
  • Invalid or uninitialized parameter values in a query
  • Data conversion errors
  • Timeouts
  • Network issues

Q2. What are the steps for troubleshooting and resolving an OLE DB/ODBC Exception Error?

A2. The steps for troubleshooting and resolving an OLE DB/ODBC Exception Error include:

  1. Gathering information
  2. Identifying potential causes
  3. Resolving the Exception Error

Q3. What are some common causes of the Exception Error?

A3. Some common causes of the Exception Error include:

  • A problem with the ODBC driver being used
  • Invalid connection information
  • Corrupt data being passed to the driver
  • A network issue with any communication between the data source and application

Q4. What are some common solutions for resolving the Exception Error?

A4. Some common solutions for resolving the Exception Error include:

  • Updating or reinstalling the ODBC driver
  • Verifying the connection information
  • Restarting the server
  • Utilizing a network monitoring tool to check for any network issues
  • Upgrading the version of the server or ODBC Driver
  • Checking for any corrupt data

Q5. What type of protocol is OLE DB/ODBC?

A5. OLE DB/ODBC is a type of protocol used for connecting to a variety of data sources such as Microsoft SQL Server and Oracle Database.

  1. Microsoft OLE DB/ODBC Driver Download: https://www.microsoft.com/en-us/download/details.aspx?id=20098
  • Remove From My Forums
  • Question

  • Hi,

    I am importing Excel 2007 file into SqlServer 2005 (Sqlexpress). The office 2007 is not installed in the machine. I have downloaded and installed «AccessDatabaseEngine». When I execute following statement

    SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’, ‘Excel 12.0;Database=D:File1.xlsx’, ‘SELECT * FROM [Sheet1$]’);The following error is comming:

    Msg 7399, Level 16, State 1, Line 1
    The OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)» reported an error. Access denied.
    Msg 7350, Level 16, State 2, Line 1
    Cannot get the column information from OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)».Can any one suggest what should I do to resolve?

    Thanks,
    Parmeshthee.


    Learning .Net 3.5

Answers

  • Try run this:

    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

     Then try your query. I have met this issue before and this should works.

    • Proposed as answer by

      Wednesday, July 22, 2009 8:26 AM

    • Marked as answer by
      Ying Lin — MSFT
      Friday, August 7, 2009 1:13 AM

  • Hi

    After reading registry entries for other providers, I have added a new entry to registry and it’s working fine now Windows 7 32 bit. It seems that Microsoft does not want to populate ACE OLEDB provider.

    Create a .reg file with text below and replace MSSQL10 (10 = SQL Server 2008) with your MSSQL version and SQLADV with SQL Server instance name. Save the file and run. It’ll add this entry to registry and you can use OPENROWSET with ACE OLEDB providers.

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL10.SQLADVProvidersMicrosoft.ACE.OLEDB.12.0]
    «AllowInProcess»=dword:00000001

    • Marked as answer by
      Ying Lin — MSFT
      Friday, August 7, 2009 1:13 AM

Понравилась статья? Поделить с друзьями:
  • Ошибка посудомоечной машины bosch горит кран что делать
  • Ошибка поставщик vfpoledb 1 не зарегистрирован на локальном компьютере
  • Ошибка посудомоечной машины bosch e09 ремонт
  • Ошибка поставщик oledb не зарегистрирован
  • Ошибка посудомоечной машины bosch e09 в конце цикла