最近我编写一个程序使用到从本地EXCEL中将信息调入DataGridView中,涉及部分代码如下:
/// <summary>
/// 从Excel表中导入订单信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void InputExcelInFor_Click(object sender, EventArgs e)
{
try
{
excelPath = @"E:/导入订单信息.xlsx";// 将信息固定在共享盘E盘中,以便将文件直接下载到该盘中
string FileType = System.IO.Path.GetExtension(excelPath);
string sqlCon;
if (FileType == ".xls")
{
qlCon = @"Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + excelPath + "';Extended Properties=Excel 8.0";
}// 旧版Excel
else
{
sqlCon = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Properties='Excel 12.0;HDR=YES;IEMX=1'";
}//2007版本
string ExcelStr = "select * from [Sheet1$]";
showExcelContent(sqlCon, ExcelStr);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
程序引用的也添加了 Microsoft Excel 12.0 Object Library 1.6版, 而调试的时候显示:“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。后来经过查询知道是因为AccessDatabaseEngine的版本不对,我的电脑系统是64位的,而安装的AccessDatabaseEngine 2007是32位的。因此我现卸载掉AccessDatabaseEngine 2007(32位),然后在网站上下载ccessDatabaseEngine 2010 X64并安装,再调试就OK了。
链接:https://pan.baidu.com/s/1ylgGh9dXco6BFHljGR1AQA
提取码:tbvg
如果有需要的可以从上面的网盘中下载,希望可以帮助到你。