對于Excel文件,想必大家也都知道這個(gè)的重要性,無(wú)論是做哪種語(yǔ)言的開(kāi)發(fā),都少不了對Excel文件的操作;
后面會(huì )用三種方式用來(lái)讀取Excel,用來(lái)滿(mǎn)足不同的項目需求;

第一種方式就是本文所要講的OleDb的方式,此方式比較簡(jiǎn)單,而且也不需要引用其他的第三方DLL,讀取速度也還可以,但是對于一些其他的細節操作,可能需要讀取到數據之后再直接對數據源進(jìn)行優(yōu)化;
OleDb連接方式,使用ADO.NET打開(kāi)來(lái)獲取Excel的數據源;
這里也再簡(jiǎn)單介紹下鏈接字符串中各個(gè)字段的意思:
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelPath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";實(shí)現功能:
使用Oledb將Excel文件中的數據顯示到dataGridView使用Sql語(yǔ)句添加數據到Excel
開(kāi)發(fā)環(huán)境:
開(kāi)發(fā)工具:Visual Studio 2013.NET Framework版本:4.5
實(shí)現代碼:
private void GetExcel(){//實(shí)例化一個(gè)datatable用來(lái)存儲數據DataTable dt = new DataTable();//指定excel所在路徑string excelPath = "d:\\1.xlsx";//Offic2007以上連接字符串string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelPath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";//Offic2007以下連接字符串if (excelPath.ToLower().EndsWith(".xls")){connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelPath + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";}OleDbConnection OleConn = new OleDbConnection(connStr);OleConn.Open();//返回excel文件的結構信息DataTable dtSheet = OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);//取第一個(gè)sheet頁(yè)的數據string sql = string.Format("SELECT * FROM [{0}]", dtSheet.Rows[0]["TABLE_NAME"]);OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);OleDaExcel.Fill(dt);//展示到頁(yè)面dataGridView1.DataSource = dt;//關(guān)閉鏈接OleConn.Close();}
到這里,讀取的代碼就完成了,這時(shí)候肯定有朋友在想,既然可以用ADO.NET去做查詢(xún),那是否可以去做更新或者插入呢?結果當然是可以的了,按照我們上面所介紹的,需要先將IMEX的值設置為0,即可寫(xiě)模式,如下:
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelPath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=0\"";然后就可以跟操作數據庫一樣直接寫(xiě)Insert語(yǔ)句了,部分代碼如下:
string sql = string.Format("insert into [{0}] values ('趙六','女','23')", dtSheet.Rows[0]["TABLE_NAME"]);OleDbCommand cmd = new OleDbCommand(sql, OleConn);cmd.ExecuteNonQuery();
由簡(jiǎn)入繁,拿來(lái)即用
后續精彩,持續關(guān)注
聯(lián)系客服