首页 > 学院 > 开发设计 > 正文

ASP.NET中读取excel内容并显示

2019-11-14 16:36:31
字体:
来源:转载
供稿:网友

   项目中经常会用到把Excel的文件内容导入到数据库中的,刚刚花了点时间,做了个例子,基本上能实现导入Excel后显示的功能吧,导入的excel文件得是xls,即是2003的. 
    代码思路如下:要读取的excel文件必得得是在本地硬盘,所以一般来说都是让远程用户选择自己硬盘上的Excel文件,然后把用户选择的文件上传到本地服务器上,再在本地服务器上进行操作.我把界面后置代码重要部分贴出来,大家自己慢慢看吧,都有注释了. 

C#代码  收藏代码
  1. // 上传按钮  
  2.     PRotected void btnUp_Click(object sender, EventArgs e)  
  3.     {  
  4.         bool b = Upload(fuExcel);  // 上传excel文件  
  5.         if (!b)  
  6.         {  
  7.             return;  
  8.         }  
  9.         string name = fuExcel.FileName;  
  10.         string filepath = Server.MapPath("~/upload/") + name;  
  11.         DataSet ds = ExcelDataSource(filepath, ExcelSheetName(filepath)[0].ToString());  
  12.         GridView1.DataSource = ds;  
  13.         GridView1.DataBind();  
  14.     }  
  15.   
  16.     //上传文件方法  
  17.     private bool Upload(FileUpload myFileUpload)  
  18.     {  
  19.         bool flag = false;  
  20.         //是否允许上载  
  21.         bool fileAllow = false;  
  22.         //设定允许上载的扩展文件名类型  
  23.         string[] allowExtensions = { ".xls" };  
  24.   
  25.         //取得网站根目录路径  
  26.         string path = HttpContext.Current.Request.MapPath("~/upload/");  
  27.         //检查是否有文件案  
  28.         if (myFileUpload.HasFile)  
  29.         {  
  30.             //取得上传文件之扩展文件名,并转换成小写字母  
  31.             string fileExtension = System.IO.Path.GetExtension(myFileUpload.FileName).ToLower();  
  32.             //检查扩展文件名是否符合限定类型  
  33.             for (int i = 0; i < allowExtensions.Length; i++)  
  34.             {  
  35.                 if (fileExtension == allowExtensions[i])  
  36.                 {  
  37.                     fileAllow = true;  
  38.                 }  
  39.             }  
  40.   
  41.             if (fileAllow)  
  42.             {  
  43.                 try  
  44.                 {  
  45.                     //存储文件到文件夹  
  46.                     myFileUpload.SaveAs(path + myFileUpload.FileName);  
  47.                     lblMes.Text = "文件导入成功";  
  48.                     flag = true;  
  49.                 }  
  50.                 catch (Exception ex)  
  51.                 {  
  52.                     lblMes.Text += ex.Message;  
  53.                     flag = false;  
  54.                 }  
  55.             }  
  56.             else  
  57.             {  
  58.                 lblMes.Text = "不允许上载:" + myFileUpload.PostedFile.FileName + ",只能上传xls的文件,请检查!";  
  59.                 flag = false;  
  60.             }  
  61.         }  
  62.         else  
  63.         {  
  64.             lblMes.Text = "请选择要导入的excel文件!";  
  65.             flag = false;  
  66.         }  
  67.         return flag;  
  68.     }  
  69.   
  70.     //该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径, sheetname为excel文件中的表名  
  71.     public DataSet ExcelDataSource(string filepath, string sheetname)  
  72.     {  
  73.         string strConn;  
  74.         strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";  
  75.         OleDbConnection conn = new OleDbConnection(strConn);  
  76.         OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);  
  77.         DataSet ds = new DataSet();  
  78.         oada.Fill(ds);  
  79.         conn.Close();  
  80.         return ds;  
  81.     }  
  82.   
  83.     //获得Excel中的所有sheetname。  
  84.     public ArrayList ExcelSheetName(string filepath)  
  85.     {  
  86.         ArrayList al = new ArrayList();  
  87.         string strConn;  
  88.         strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";  
  89.         OleDbConnection conn = new OleDbConnection(strConn);  
  90.         conn.Open();  
  91.         DataTable sheetNames = conn.GetOleDbSchemaTable  
  92.         (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });  
  93.         conn.Close();  
  94.         foreach (DataRow dr in sheetNames.Rows)  
  95.         {  
  96.             al.Add(dr[2]);  
  97.         }  
  98.         return al;  
  99.     }  


要注意的是我们要一开始就在网站根目录下建立upload文件夹,而且要把他的权限设置为可读可写的?这个权限的问题搞得头大,不知道到底应该怎么搞的,XP系统下新建立的文件夹好像都是只读的,我右键属性把只读去掉,结果再次查看的时候还是只读,不过好像发现对程序没有什么意思,上传完excel文件后还是可以读取查看的. 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表