怎么在asp.net中上传Excel文件并读取数据

  介绍

这篇文章给大家介绍怎么在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数据   ,List regList =, 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文件并读取数据