最近我編寫一個程序使用到從本地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
如果有需要的可以從上面的網盤中下載,希望可以幫助到你。