zoukankan      html  css  js  c++  java
  • 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[] { 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文件后还是可以读取查看的. 

  • 相关阅读:
    EF获取DbContext中已注册的所有实体类型
    使用一阶微分对图像锐化
    数字图像处理之直方图均衡
    【HDFS】相关概念及常用命令
    【Java】ConcurrentHashMap源码解析
    【Java】对foreach循环的思考
    php生成二维码
    spilt
    strtolower
    in_array
  • 原文地址:https://www.cnblogs.com/ranran/p/3811804.html
Copyright © 2011-2022 走看看