Asp.net/c#+OleDb操作excel文件 [ BugEyes 發(fā)表于 2007-10-13 15:58:00 ] |
1 1、環(huán)境配置:加入using System.OleDb 2、編寫連接與操作excel文件的通用函數(shù) protected void DoOleSql(string sql, string database) { OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("\\") + database + "; Extended Properties='Excel 8.0;HDR=no;IMEX=0'"; try {//打開連接 conn.Open(); } catch (Exception e) { Response.Write(e.ToString()); } OleDbCommand olecommand = new OleDbCommand(sql, conn); try {//執(zhí)行語句 olecommand.ExecuteNonQuery(); } catch (Exception eee) { Response.Write(eee.ToString()); conn.Close(); } finally { conn.Close();//關(guān)閉數(shù)據(jù)庫 } conn.Close(); } 注:1)使用 Excel 工作簿時(shí),默認(rèn)情況下,區(qū)域中的第一行是標(biāo)題行(或字段名稱)。如果第一個(gè)區(qū)域不包含標(biāo)題,您可以在連接字符串的擴(kuò)展屬性中指定 HDR=NO。如果您在連接字符串中指定 HDR=NO,Jet OLE DB 提供程序?qū)⒆詣?dòng)為您命名字段(F1 表示第一個(gè)字段,F2 表示第二個(gè)字段,依此類推);2)IMEX=1將所有讀入數(shù)據(jù)看作字符,其他值(0、2)請(qǐng)查閱相關(guān)幫助文檔;3)如果出現(xiàn)“找不到可安裝的isam”錯(cuò)誤,一般是連接字符串錯(cuò)誤 3、從excel文件讀取數(shù)據(jù) string sql = "select * from [sheet1$]"; DoOleSql(sql,"test.xls"); 4、更新excel文件中的數(shù)據(jù) string sql = "update [sheet1$] set FieldName1='333' where FieldName2='b3'"; DoOleSql(sql,"test.xls"); 5、向excel文件插入數(shù)據(jù) string sql = "insert into [sheet1$](FieldName1,FieldName2,…) values('a',’b’,…)"; DoOleSql(sql,"test.xls"); 6、刪除excel文件中的數(shù)據(jù):不提倡使用這種方法 7、對(duì)于非標(biāo)準(zhǔn)結(jié)構(gòu)的excel表格,可以指定excel中sheet的范圍 1)讀取數(shù)據(jù):string sql = "select * from [sheet1$A3:F20]"; 2)更新數(shù)據(jù):string sql = "update [sheet1$A9:F15] set FieldName='333' where AnotherFieldName='b3'"; 3)插入數(shù)據(jù):string sql = "insert into [sheet1$A9:F15](FieldName1,FieldName2,…) values('a',’b’,…)"; 4)刪除數(shù)據(jù):不提倡 注:1)代碼根據(jù)需要可以自行修改;2)如果出現(xiàn)“操作必須使用一個(gè)可更新的查詢”錯(cuò)誤,可能sql語句中對(duì)excel文件中的“字段”引用有錯(cuò)誤,或?qū)xcel文件不具有“修改”權(quán)限;3)如果出現(xiàn)“不能擴(kuò)充選定范圍”錯(cuò)誤,可能是對(duì)excel文件引用的“范圍”有錯(cuò)誤。 |
聯(lián)系客服