|
前幾天朋友公司開(kāi)發(fā)需要用到Excel的導(dǎo)入導(dǎo)出,需要通過(guò)Web將數(shù)據(jù)庫(kù)中的內(nèi)容與Excel互導(dǎo)!問(wèn)到我,自己以前做過(guò),網(wǎng)上很多類(lèi)似的解決方案都是使用類(lèi)似DataGrid或GridView這樣的控件直接導(dǎo)入到Excel,方便,但不是很實(shí)用,有時(shí)候甚至導(dǎo)出的Excel并不是我們需要的格式!記得曾經(jīng)聽(tīng)邵志東老師講過(guò)ASP.NET下的自動(dòng)化操作。但一時(shí)又沒(méi)找到相關(guān)的代碼。在這里我將自己的示例在這貼出,以方便有自己和以后有這方面需要的朋友查詢(xún)! protected void btnLoadDt_Click(object sender, EventArgs e) { BindData(LoadDataTable()); } //創(chuàng)建DataTable private DataTable LoadDataTable() { DataTable dt = new DataTable(); DataColumn dc = new DataColumn("userName"); dt.Columns.Add(dc); dc = new DataColumn("userSex"); dt.Columns.Add(dc);![]() DataRow dr = dt.NewRow(); dr[0] = "fengyan"; dr[1] = "male"; dt.Rows.Add(dr);![]() dr = dt.NewRow(); dr[0] = "efly"; dr[1] = "male"; dt.Rows.Add(dr);![]() dr = dt.NewRow(); dr[0] = "楚旋"; dr[1] = "male"; dt.Rows.Add(dr);![]() return dt; }點(diǎn)擊DataTablle導(dǎo)出Excel即可將該DataTable 內(nèi)容導(dǎo)出到指定的Excel中。相關(guān)代碼如下: protected void btnExportExcel_Click(object sender, EventArgs e) { //得到需要導(dǎo)入Excel的DataTable DataTable dt = LoadDataTable(); //將其列名添加進(jìn)去! (這一步注意是為了方便以后將該Excel導(dǎo)入內(nèi)存表中 自動(dòng)創(chuàng)建列名用。) DataRow dr = dt.NewRow(); dr[0] = "userName"; dr[1] = "userSex"; dt.Rows.InsertAt(dr, 0);![]() //實(shí)例化一個(gè)Excel助手工具類(lèi) ExcelHelper ex = new ExcelHelper(); //導(dǎo)入所有!(從第一行第一列開(kāi)始) ex.DataTableToExcel(dt, 1, 1); //導(dǎo)出Excel保存的路徑! ex.OutputFilePath = txtExcelPath.Text; ex.OutputExcelFile(); }![]() 已經(jīng)將內(nèi)容導(dǎo)出到Excel?,F(xiàn)在在其中添加一行內(nèi)容 如果要將該Excel再讀取到DataTable中比較簡(jiǎn)單,可以使用ADO.NET Excel導(dǎo)入DataTable事件代碼如下: protected void btnExcelToDataTable_Click(object sender, EventArgs e) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtFromExcel.Text + ";Extended Properties=Excel 8.0"; //鏈接Excel OleDbConnection cnnxls = new OleDbConnection(strConn); //讀取Excel里面有 表Sheet1 OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls); DataSet ds = new DataSet(); //將Excel里面有表內(nèi)容裝載到內(nèi)存表中! oda.Fill(ds); DataTable dt = ds.Tables[0]; BindData(dt); }![]() 可以看到從Excel又讀回?cái)?shù)據(jù)并且自動(dòng)綁定到Repeater上,我們?cè)黾拥囊恍袛?shù)據(jù)也正確顯示了! 之所以可以正確綁定出來(lái),是因?yàn)槲覀冊(cè)趯?dǎo)出的時(shí)候在Excel最上行添加了一行列名,所以可以對(duì)應(yīng)綁定! 實(shí)際中更多的是數(shù)據(jù)庫(kù)和Excel的互操作!本文講到DataTable,從DataTable到數(shù)據(jù)庫(kù)的轉(zhuǎn)換也是容易的! 數(shù)據(jù)從Excel導(dǎo)入到DataTable后,我們可以通過(guò)編寫(xiě)少量代碼即可將數(shù)據(jù) 添加或更新回?cái)?shù)據(jù)庫(kù)!這也是可以的! 本示例代碼下載/Files/eflylab/ExcelHelper.rar |
|
|
來(lái)自: 醉人說(shuō)夢(mèng) > 《我的圖書(shū)館》