利用OLEDB導(dǎo)出數(shù)據(jù)到Excel
原帖地址:http://blog.csdn.net/cpp2017/archive/2008/04/02/2245396.aspx 利用OELDB數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象操作Excel文件,達(dá)到將數(shù)據(jù)導(dǎo)出到Excel的目的,,這種方法可能用的人不太多,,缺點(diǎn)是必須有一個(gè)存在的Excel文件,。優(yōu)點(diǎn)是服務(wù)器不需要安裝Excel,,且生成的Excel是標(biāo)準(zhǔn)的Excel格式可以當(dāng)作數(shù)據(jù)源使用,。 準(zhǔn)備工作: 1)先用準(zhǔn)備一個(gè)Excel文件,,這個(gè)Excel文件可以是空的,,或是有一定格式的當(dāng)做數(shù)據(jù)模板使用,。 2)將操作的目錄給ASP.NET用戶(hù)(ASPNET 或NETWORK SERVICE)寫(xiě)入權(quán)限。 以下是示例: 說(shuō)明一下:如果這個(gè)模板文件是個(gè)空文件,,則需要使用Create Table創(chuàng)建一個(gè)工作表,否則只需使用已有的表進(jìn)操作就可以了,。 DataTable dt = new DataTable(); dt.Columns.Add("name"); dt.Columns.Add("age", typeof(int)); dt.Columns.Add("phone"); dt.Rows.Add("老張", 40,"99213812"); dt.Rows.Add("小李", 28,"a21313"); dt.Rows.Add("小王", 22,"2131434"); string FileName = Guid.NewGuid().ToString()+".xls"; string sNewFullFile = Server.MapPath(FileName); try { File.Copy(Server.MapPath("format.xls"), sNewFullFile); } catch (Exception er) { Response.Write(er.Message); return; } string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Data Source=" + sNewFullFile + ";Extended Properties=Excel 8.0;"; System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn); OleDbCommand cmd = null; bool bRet = false; try { conn.Open(); cmd = new OleDbCommand("create table [sheet4]([姓名] Text,[年齡] int,[電話(huà)] Text)",conn); cmd.ExecuteNonQuery(); string strSQL = "INSERT INTO [Sheet4$] ([姓名], [年齡],[電話(huà)]) VALUES (?, ?, ?)"; cmd = new OleDbCommand(strSQL, conn); for (int i = 0; i < 3; i++) { cmd.Parameters.Add(i.ToString(), OleDbType.VarChar); } DataView dv = dt.DefaultView; foreach (DataRowView row in dv) { cmd.Parameters[0].Value = row["name"].ToString(); cmd.Parameters[1].Value =(int) row["age"]; cmd.Parameters[2].Value = row["phone"].ToString(); cmd.ExecuteNonQuery(); } bRet = true; } catch (Exception er) { Response.Write(er.Message); } finally { if (cmd != null) { cmd.Dispose(); } conn.Dispose(); } if(bRet) Response.Redirect(FileName); |
|