C#使用Microsoft.ACE.OLEDB.12.0 需要安装的组件
作者:互联网
報錯信息:
C#使用Microsoft.ACE.OLEDB.12.0 需要安装的组件
下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=13255
記得要選擇中英文版本,這個要注意,不然會安裝不了的。
微軟官網說明:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255
安裝說明:
注意:在安装此下载之前,必须先通过使用“控制面板”中的“添加/删除程序”,从你的计算机中卸载任何以前版本的 Access 数据库引擎。
若要安装此下载,请执行以下操作:
通过单击“下载”按钮并将文件保存到硬盘上来下载文件。
双击硬盘上的“AccessDatabaseEngine.exe”程序文件启动安装程序。
按照屏幕上的说明完成安装。
若要使用此下载,请执行以下操作:
如果您是应用程序用户,请查阅您的应用程序文档,了解有关如何使用相应驱动程序的详细信息。
如果您是使用 OLEDB 的应用程序开发人员,请将 ConnectionString 属性的 Provider 参数设置为“Microsoft.ACE.OLEDB.12.0”。
如果要连接到 Microsoft Office Excel 数据,请根据 Excel 文件类型添加相应的 OLEDB 连接字符串扩展属性:
文件类型(扩展名) 扩展属性
Excel 97-2003 工作簿 (.xls) “Excel 8.0”
Excel 2007-2010 工作簿 (.xlsx) “Excel 12.0 Xml”
启用宏的 Excel 2007-2010 工作簿 (.xlsm) “Excel 12.0 宏”
Excel 2007-2010 非 XML 二进制工作簿 (.xlsb) “Excel 12.0”
如果您是使用 ODBC 连接到 Microsoft Office Access 数据的应用程序开发人员,请将连接字符串设置为“Driver={Microsoft Access Driver (*.mdb, .accdb)};DBQ=path to mdb/accdb file”
如果您是使用 ODBC 连接到 Microsoft Office Excel 数据的应用程序开发人员,请将连接字符串设置为“Driver={Microsoft Excel Driver (.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=path to xls/xlsx/xlsm/xlsb file”
若要删除此下载,请执行以下操作:
若要删除下载文件本身,请删除文件 AccessDatabaseEngine.exe
在“开始”菜单上,指向“设置”,然后单击“控制面板”。
双击 “添加/删除程序”。
在当前安装的应用程序列表中,选择“Microsoft Access 2010 数据库引擎”,然后单击“删除”或“添加/删除”。如果出现对话框,请按照说明删除该程序。
单击“是”或“确定”,以确认要删除该程序。
c# 代碼參考
private void btn_export_to_excel()
{
try
{
string _file_path = Path.Combine(Application.StartupPath, comboBox1.Text.ToString());
if (File.Exists(_file_path))
{
if (MessageBox.Show(_file_path + " 已存在是否删除", _file_path + " 已存在是否删除", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
File.Delete(_file_path);
}
else
{
return;
}
}
//Microsoft的OLEDB控件对64位 ----读excel文件
//如果HDR=YES,DataTable默认的列名为Excel 第一行数据...
//如果HDR=NO,DataTable默认的列名为F1,F2,F3...
//string sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "c:/ test.xls" + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';"; // Office 07及以上版本 不能出现多余的空格 而且分号注意
//写 excel 文件
//弹出【未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”】的错误,一般是因为目标计算机是64位的,需要调整一下程序中Microsoft的OLEDB控件对64位的计算机兼容性。
//String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=c:/test.xls;" + "Extended Properties=Excel 8.0;";
String sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + _file_path + ";" + "Extended Properties=Excel 12.0;";
OleDbConnection cn = new OleDbConnection(sConnectionString);
//string sqlCreate = "CREATE TABLE imm_data_log ([machineip] INTEGER,[Username] VarChar,[UserPwd] VarChar)";
string sqlCreate = "CREATE TABLE imm_data_log ([设备ip] VarChar,[数据] Text,[日期] VarChar)";
OleDbCommand cmd = new OleDbCommand(sqlCreate, cn);
//创建Excel文件:C:/test.xls
cn.Open();
//创建 imm_data_log 工作表
cmd.ExecuteNonQuery();
//添加数据
toolStripProgressBar1.Value = 1;
int i = 1;
decimal percent = 0;
StringBuilder _sql_str = new StringBuilder();
foreach (cls_hismessagedatalog item in imm_log_list)
{
//_sql_str.Append("INSERT INTO imm_data_log VALUES('" + item.machineid + "','"+item.messagedata+"','"+ item.logdt+ "') ");
string _str = "INSERT INTO imm_data_log VALUES('" + item.machineid + "','" + item.messagedata + "','" + item.logdt + "') ";
cmd.CommandText = _str;
percent = (decimal)(((decimal)100 * i) / imm_log_list.Count);
toolStripProgressBar1.Value = Convert.ToInt32(percent);
//toolStripProgressBar1.ToolTipText = Convert.ToInt32(percent).ToString();
i = i + 1;
cmd.ExecuteNonQuery();
}
//string saa = _sql_str.ToString();
cmd.CommandText = "INSERT INTO imm_data_log VALUES(1,'elmer','password')";
//cmd.CommandText = _sql_str.ToString();
//cmd.ExecuteNonQuery();
Thread.Sleep(2000);
//关闭连接
cn.Close();
MessageBox.Show("导出到Excel完成\r\n"+ _file_path , "导出到Excel完成");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}
}
我想說的是 INSERT INTO imm_data_log 真的效率太低了,要再試試updata來提醒程序執行效率。。。
标签:log,ACE,C#,Excel,OLEDB.12,imm,file,path,Microsoft 来源: https://blog.csdn.net/gangli_8/article/details/110517395