将Excel文件中的数据导入GridView


         在Asp.net中怎样将Excel文件中的数据导入到GridView中呢?下面我来为大家说说这个详细的过程。Excel文件就是一张数据表,当然我们可以把它看作一个数据源了。


首先我们将这张表中的数据转换为DataTable类型的数据源,做一个函数来解决这个问题:


private DataTable createDataSource(string strPath)
        {
            stringstrCon;
            strCon = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=" + strPath  + ";Extended Properties=Excel 8.0";
            OleDbConnectioncon = new OleDbConnection(strCon);
            OleDbDataAdapterda = new OleDbDataAdapter("select * from [Sheet1$]", con);
            DataTabledt = new DataTable();
            da.Fill(dt);
            returndt;
        }


只需要传入Excel文件的路径即可。


      其次我们就是利用这个可以函数了。要想将客户端的Excel文件显示到客户端的GridView控件当中,这次都是客户端的东西,在我们的服务器端代码是无法做到的。所以我们必须把这个Excel文件暂时的保存到服务器,我们读取服务器端的文件才可以实现这样的功能。看下面的实现代码:


protected void Button1_Click(objectsender, EventArgs e)
        {
            //检查文件是否存在
            if(FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(),"message", "<script language='javascript' defer>alert('请您选择Excel文件!');</script>");
                return;//当无文件时,返回
            }
 
            stringfilename = DateTime.Now.ToString("yyyymmddhhMMss") +FileUpload1.FileName;
            //获取Execle文件名  DateTime日期函数
            stringsavePath = Server.MapPath(("~/Doc/")+ filename);//Server.MapPath 获得虚拟服务器相对路径
 
            //如果已经存在就清空
            ClearFile(Server.MapPath("~/Doc/"));
 
            FileUpload1.SaveAs(savePath);                        //SaveAs将上传的文件内容保存在服务器上
 
           
            DataTabledt = createDataSource(savePath);
            GridView1.DataSource = dt;
            GridView1.DataBind();
 
        }


 

      在上面的代码中我们用到了一个函数ClearFile,它是用来清理文件夹的,我们将Excel文件暂时的存储到服务器端的一个文件夹中,只能暂时的存储,那么东西只会越来越多,而且这些东西也是一些没用的东西,很可能导致系统性能的下降。我们就是用这个函数来清理文件的,下面来一睹这个函数的精妙:


private void ClearFile(stringFilePath)
        {
            String[]files = System.IO.Directory.GetFiles(FilePath);
            if(files.Length > 5)
            {
                for(int i = 0; i < 5; i++)
                {
                    try
                    {
                        System.IO.File.Delete(files[i]);
                    }
                    catch
                    {
                    }
 
                }
            }
        }


 



 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值