ASP.NET中读取excel内容,并显示在界面上

项目中经常会用到把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[] { nullnullnull"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文件后还是可以读取查看的.

阅读更多
想对作者说点什么? 我来说一句

ASP.net中读取execl内容

2011年12月18日 144KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭