尝试加载Excel信息时出错

时间:2020-02-14 14:12:47

标签: c# excel

我有C#WinForms应用程序,该应用程序从Excel工作表中获取信息并将其存储到我的数据库中,我的代码在我的PC上运行正常,但是当我将其更改为错误

System.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 个答案:

答案 0 :(得分:2)

您需要从此处microsoft downloads下载32位驱动程序(我认为这是正确的),但是您可能会遇到的困难是,一台计算机不能同时安装64位和32位版本。

使用EPPlus是更现代的方法。