Ошибка при попытке загрузить информацию Excel - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть C# приложение WinForms, которое получает информацию из листа Excel и сохраняет ее в моей базе данных, мой код отлично работает на моем P C, но когда я изменил его, возникает ошибка

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

. Я решил эту проблему, изменив платформу проекта с x86 на x64, но когда я запускаю проект с x64, я не могу загрузить много файлов, поэтому мне нужно запустить его на x86. Ребята какие решения?

Rq: Мой код:

String name = "Feuil1";
            String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                            textBox_path.Text +
                            ";Extended Properties='Excel 12.0 XML;HDR=YES;';";

            OleDbConnection con = new OleDbConnection(constr);
            OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con);
            con.Open();

            OleDbDataAdapter sda = new OleDbDataAdapter(oconn);
            DataTable data = new DataTable();
            sda.Fill(data);
            dataview1.DataSource = data;
            using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["UR2k_CS.Properties.Settings.StoreConnectionString"].ConnectionString))
            {
                String query = "INSERT INTO dbo.Stock (RFID,name,refrence,prix,Stockdate) VALUES (@RFID,@name,@refrence,@prix,@Stockdate)";
                connection.Open();
                        for (int i=0;i<dataview1.Rows.Count-1;i++)
                        {



                            using (SqlCommand command = new SqlCommand(query, connection))
                            {
                                    if ((dataview1.Rows[i].Cells[0].Value.ToString()!=null)&&((!checkifexist(dataview1.Rows[i].Cells[0].Value.ToString()))) &&(dataview1.Rows[i].Cells[0].Value.ToString()!=""))
                                    {

                                        command.Parameters.AddWithValue("@RFID", dataview1.Rows[i].Cells[0].Value.ToString());
                                        command.Parameters.AddWithValue("@name", dataview1.Rows[i].Cells[1].Value.ToString());
                                        command.Parameters.AddWithValue("@refrence", dataview1.Rows[i].Cells[2].Value.ToString());
                                        command.Parameters.AddWithValue("@prix", dataview1.Rows[i].Cells[3].Value.ToString());

                                        command.Parameters.AddWithValue("@Stockdate", DateTime.Now);


                                        command.ExecuteNonQuery();
                                    }       

                            }
                        }
                connection.Close();
            }

1 Ответ

2 голосов
/ 14 февраля 2020

Вам нужно скачать 32-битный драйвер отсюда Microsoft загрузить (я думаю, что это правильный вариант), но сложность, с которой вы можете столкнуться, заключается в том, что на машине не может быть установлена ​​как 64-битная, так и 32-битная версии бок о бок.

Использование EPPlus - более современный подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...