我有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();
}
答案 0 :(得分:2)
您需要从此处microsoft downloads下载32位驱动程序(我认为这是正确的),但是您可能会遇到的困难是,一台计算机不能同时安装64位和32位版本。
使用EPPlus是更现代的方法。