介绍
这篇文章给大家介绍怎么在asp.net中上传Excel文件并读取数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强>实现如下:强>
前台代码:使用服务端控件实现上传
,, & lt; form id=癴orm1", runat=皊erver"比; ,,& lt; div> ,,,& lt; asp: FileUpload ID=癊xcelFileUpload", runat=皊erver",/比; ,,,& lt; asp: Button ID=癠ploadBtn", runat=皊erver",文本=叭范ㄉ洗?OnClick=癠ploadBtn_Click",/比; ,,& lt;/div> & lt;才能/form>
服务端代码:
protected void UploadBtn_Click (object ,发送方,EventArgs e) { ,if (ExcelFileUpload.HasFile ==, false)//HasFile用来检查FileUpload是否有文件 ,{ Response.Write才能(“& lt; script>警报(& # 39;请您选择Excel文件& # 39;)& lt;/script>,“);//当回报,才能无文件时,返回 ,} ,string IsXls =, Path.GetExtension (ExcelFileUpload.FileName) .ToString () .ToLower ();//System.IO.Path.GetExtension获得文件的扩展名 ,if (IsXls !=,“.xlsx",,,, IsXls !=,“.xls") ,{ Response.Write才能(ExcelFileUpload.FileName); Response.Write才能(“& lt; script>警报(& # 39;只可以选择Excel文件& # 39;)& lt;/script>“);//当回报,才能选择的不是Excel文件时,返回 ,} ,string filename =, ExcelFileUpload.FileName;//获取Execle文件名, ,string savePath =, Server.MapPath ((“UploadExcel \ \“), +,文件名);//Server.MapPath 服务器上的指定虚拟路径相对应的物理文件路径 ,//savePath =癉: \ vsproject \ \项目exceltestweb \ exceltestweb \还是\ test.xls" ,//Response.Write (savePath); ,DataTable ds =, new DataTable (); ,ExcelFileUpload.SaveAs (savePath);//将文件保存到指定路径 ,DataTable dt =, GetExcelDatatable (savePath);//读取excel数据 ,ListregList =, ConvertDtToInfo (dt);//将datatable转为列表 ,File.Delete (savePath);//删除文件 ,Response.Write (“& lt; script>警报(& # 39;上传文件读取数据成功! & # 39;);& lt;/script>“); }///,& lt; summary>///,从excel文件中读取数据///,& lt;/summary>///,& lt; param name=癴ileUrl"在实体文件的存储路径& lt;/param>///,& lt; returns> & lt;/returns> private static  DataTable GetExcelDatatable (string fileUrl) { ,//支持xls和.xlsx,即包括office2010等版本的;HDR=Yes代表第一行是标题,不是数据; ,string cmdText =,“提供者=Microsoft.ACE.OLEDB.12.0; Data 源=?+,fileUrl +,“;, Extended 属性=\“Excel 12.0; HDR=Yes \““; ,System.Data.DataTable dt =,空; ,//建立连接 ,OleDbConnection conn =, new OleDbConnection (cmdText); ,试一试 ,{//打才能开连接 if 才能;(conn.State ==, ConnectionState.Broken | |, conn.State ==, ConnectionState.Closed) {才能 ,,conn.Open (); ,,} System.Data.DataTable 才能;schemaTable =, conn.GetOleDbSchemaTable (OleDbSchemaGuid.Tables, null); string 才能;strSql =,“select *,得到[Sheet1 $]“;,//这里指定表明为Sheet1,如果修改过表单的名称,请使用修改后的名称 OleDbDataAdapter 才能;da =, new OleDbDataAdapter (strSql,康涅狄格州); DataSet 才能;ds =, new 数据集(); da.Fill才能(ds); 时间=dt 才能;ds.Tables [0];,; return 才能,dt; ,} ,catch (Exception exc) ,{ throw 才能;exc; ,} ,最后 ,{ conn.Close才能(); conn.Dispose才能(); ,} }///,& lt; summary>///,将datatable转换为列表集合///,& lt;/summary>///,& lt; param name=癲t"祝辞DataTable///,& lt; returns> & lt;/returns> private static  List list =, new List (); ,if (dt.Rows.Count 祝辞,0) ,{ foreach 才能;(DataRow item  dt.Rows拷贝) {才能 ,,RegNumInfo info =, new RegNumInfo (); ,,info.RegNum =,项[0].ToString (); ,,info.Name =,项[1].ToString (); ,,info.Period =,项[2].ToString (); ,,info.Remark =,项[3].ToString (); ,,list.Add(信息); ,,} ,} ,return 列表; }
public class RegNumInfo { ,public string RegNum {组,得到,,,} ,public string Name {组,得到,,,} ,public string Period {组,得到,,,} null null怎么在asp.net中上传Excel文件并读取数据