ssis microsoft.ace.oledb.12.0 ошибка в Visual Studio 2008

1

Это мой код для чтения столбцов из листа excel и сохранения в таблицу данных, которая отлично работает в моем приложении Visual Studio 2010 Console, но когда я использую этот код в своем проекте SSIS с помощью Visual Studio 2008, и я использовал точный код в SSIS, тогда я получаю сообщение об ошибке The Microsoft.ACE.OLEDB.12.0 provider is not registered on the local Machine

Я новичок в SSIS, и мои другие проекты SSIS VS2008 работают нормально, но в этом я должен был прочитать данные из excel, поэтому я использую свой существующий код, но получаю эту ошибку.

  //excel to data table
            public  System.Data.DataTable exceltodatatable()
            {
                System.Data.DataTable myTable = null; ;
                try
                {

                    System.Data.OleDb.OleDbConnection MyConnection;

                    System.Data.DataSet DtSet;
                    System.Data.OleDb.OleDbDataAdapter MyCommand;
                    //  string path = @"D:\projects\excel\spec.xlsx";
                    //string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
                    MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\projects\\excel_tEST\\ConsoleApplication13\\ConsoleApplication13\\bin\\Debug\\excel\\clublist.xlsx';Extended Properties=Excel 12.0;");
                    MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
                    MyCommand.TableMappings.Add("Table", "TestTable");
                    DtSet = new System.Data.DataSet();
                    MyCommand.Fill(DtSet);
                    myTable = DtSet.Tables[0];
                    MyConnection.Close();
                    myTable.Columns.Add("someNewColumn", typeof(string));
                    int i = 0;
                    foreach (DataRow drOutput in myTable.Rows)
                    {
                        //  drOutput["Preferred Version"] = drOutput["Preferred Version"].ToString().Replace("**", "yes");
                        //your remaining codes
                        int count = drOutput[0].ToString().Length;
                        if (count <= 24)
                        {
                            myTable.Rows[i][1] = "3"; ;
                        }
                        else
                        {
                            myTable.Rows[i][1] = "4"; ;
                        }
                        i++;

                    }
                }
                catch (Exception ex)
                {
                    //MessageBox.Show(ex.ToString());
                }

                // myTable.Columns.Remove("Author");
                return myTable;
            }

Это скриншот моей ошибки. Любая помощь?

Теги:
ssis
c#-4.0
office-interop
excel-interop

1 ответ

1
Лучший ответ

Это ошибка, когда драйвер OLEDB не может найти поставщика, которого вы указали. Учитывая тот факт, что он работает в Visual Studio (я предполагаю на том же компьютере), вы можете посмотреть, строите ли вы приложение как 64-битное, а не 32-битное. Поставщик, который вы установили, скорее всего, является x86, и поэтому его нужно вызывать из приложения x86.

Попробуйте настроить время выполнения на 32-битное (следуйте этому руководству) и посмотрите, исправляет ли эта ошибка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню