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

本文介绍了一个简单的Excel文件导入数据库的方法,适用于.xls格式的文件。通过上传Excel文件到服务器,使用ADO.NET读取并填充到DataSet中,最后展示在GridView中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 
// 上传按钮
    protected void btnUp_Click(object sender, EventArgs e)
    {
        bool b = Upload(fuExcel);  // 上传excel文件
        if (!b)
        {
            return;
        }
        string name = fuExcel.FileName;
        string filepath = Server.MapPath("~/upload/") + name;
        DataSet ds = ExcelDataSource(filepath, ExcelSheetName(filepath)[0].ToString());
        GridView1.DataSource = ds;
        GridView1.DataBind();
    }

    //上传文件方法
    private bool Upload(FileUpload myFileUpload)
    {
        bool flag = false;
        //是否允许上载
        bool fileAllow = false;
        //设定允许上载的扩展文件名类型
        string[] allowExtensions = { ".xls" };

        //取得网站根目录路径
        string path = HttpContext.Current.Request.MapPath("~/upload/");
        //检查是否有文件案
        if (myFileUpload.HasFile)
        {
            //取得上传文件之扩展文件名,并转换成小写字母
            string fileExtension = System.IO.Path.GetExtension(myFileUpload.FileName).ToLower();
            //检查扩展文件名是否符合限定类型
            for (int i = 0; i < allowExtensions.Length; i++)
            {
                if (fileExtension == allowExtensions[i])
                {
                    fileAllow = true;
                }
            }

            if (fileAllow)
            {
                try
                {
                    //存储文件到文件夹
                    myFileUpload.SaveAs(path + myFileUpload.FileName);
                    lblMes.Text = "文件导入成功";
                    flag = true;
                }
                catch (Exception ex)
                {
                    lblMes.Text += ex.Message;
                    flag = false;
                }
            }
            else
            {
                lblMes.Text = "不允许上载:" + myFileUpload.PostedFile.FileName + ",只能上传xls的文件,请检查!";
                flag = false;
            }
        }
        else
        {
            lblMes.Text = "请选择要导入的excel文件!";
            flag = false;
        }
        return flag;
    }

    //该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径, sheetname为excel文件中的表名
    public DataSet ExcelDataSource(string filepath, string sheetname)
    {
        string strConn;
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
        OleDbConnection conn = new OleDbConnection(strConn);
        OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
        DataSet ds = new DataSet();
        oada.Fill(ds);
        conn.Close();
        return ds;
    }

    //获得Excel中的所有sheetname。
    public ArrayList ExcelSheetName(string filepath)
    {
        ArrayList al = new ArrayList();
        string strConn;
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
        OleDbConnection conn = new OleDbConnection(strConn);
        conn.Open();
        DataTable sheetNames = conn.GetOleDbSchemaTable
        (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
        conn.Close();
        foreach (DataRow dr in sheetNames.Rows)
        {
            al.Add(dr[2]);
        }
        return al;
    }


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值