ASP.Net动态读取Excel文件最简方法
程序员文章站
2023-12-15 09:05:28
注意:页面分别拖拽一个fileupload、button1、label1、gridview控件,并新建一个uploadedexcel文件夹
default.aspx.cs...
注意:页面分别拖拽一个fileupload、button1、label1、gridview控件,并新建一个uploadedexcel文件夹
default.aspx.cs代码:
using system; using system.collections.generic; using system.data; using system.data.oledb; using system.io; using system.linq; using system.web; using system.web.ui; using system.web.ui.webcontrols; namespace webapplication2 { public partial class webform1 : system.web.ui.page { protected void page_load(object sender, eventargs e) { delete(); } protected void button1_click(object sender, eventargs e) { oledbconnection conn = new oledbconnection(); oledbcommand cmd = new oledbcommand(); oledbdataadapter da = new oledbdataadapter(); dataset ds = new dataset(); string query = null; string connstring = ""; string strfilename = datetime.now.tostring("ddmmyyyy_hhmmss"); //string strfilename = path.getfilenamewithoutextension(fileupload1.postedfile.filename); string strfiletype = path.getextension(fileupload1.filename).tostring().tolower(); if (strfiletype == ".xls" || strfiletype == ".xlsx") { fileupload1.saveas(server.mappath("~/uploadedexcel/" + strfilename + strfiletype)); } else { return; } string strnewpath = server.mappath("~/uploadedexcel/" + strfilename + strfiletype); if (strfiletype.trim() == ".xls") { connstring = "provider=microsoft.jet.oledb.4.0;data source=" + strnewpath + ";extended properties=\"excel 8.0;hdr=yes;imex=2\""; } else if (strfiletype.trim() == ".xlsx") { connstring = "provider=microsoft.ace.oledb.12.0;data source=" + strnewpath + ";extended properties=\"excel 12.0;hdr=yes;imex=2\""; } query = "select * from [sheet1$]"; conn = new oledbconnection(connstring); if (conn.state == connectionstate.closed) { conn.open(); } try { cmd = new oledbcommand(query, conn); da = new oledbdataadapter(cmd); ds = new dataset(); da.fill(ds); gridview1.datasource = ds.tables[0]; gridview1.databind(); label1.text = "读取成功"; } catch (exception ex) { label1.text = "读取失败"; response.write(ex); } finally { da.dispose(); conn.close(); conn.dispose(); } } //定时任务 private void delete() { directoryinfo di = new directoryinfo(server.mappath("/uploadedexcel/")); fileinfo[] fi = di.getfiles("*." + "*"); datetime dtnow = datetime.now; foreach (fileinfo tmpfi in fi) { timespan ts = dtnow.subtract(tmpfi.lastwritetime); if (ts.milliseconds > 100) { tmpfi.attributes = fileattributes.normal; tmpfi.delete(); } } } } }
注意:fileupload控件并不能直接获取到文件的绝对路径(ie6及以下除外),只能通过上传到服务器再进行数据加载,然后再删除