`
xfth2009
  • 浏览: 49457 次
  • 性别: Icon_minigender_2
  • 来自: 襄樊
社区版块
存档分类
最新评论

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

阅读更多

项目中经常会用到把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文件后还是可以读取查看的.
下面是源码:

分享到:
评论

相关推荐

    asp.net知识库

    在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值...

    asp.net专家疑难解答200问

    如何在ASP.NET中动态的创建柱状和饼状统计图 192.如何判断上传图片的高度和宽度 193.如何使用DESCryptoServiceProvider类对数据或者文件进行加密解密 194.如何统计在线人数 195.如何在ASP.NET实现...

    ASP.NET3.5从入门到精通

    4.6 ASP.NET 生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET 网站文件...

    ASP.NET 3.5 开发大全

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    ASP.NET 3.5 开发大全word课件

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    ASP.NET 3.5 开发大全11-15

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    ASP.NET 3.5 开发大全1-5

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    ASP.NET3.5典型模块开发源代码

    15.2.2 如何在ASP.NET 3.5中调用Alexa的数据 170 15.3 自定义统计模块 171 15.3.1 设计保存IP数据的数据库 171 15.3.2 设计显示IP信息的界面 173 15.3.3 显示最近访问站点的10个IP信息 174 15.3.4 实现IP...

    asp.net专家疑难解答200问源码

    190.如何在ASP.NET中动态的创建柱状和饼状统计图 192.如何判断上传图片的高度和宽度 193.如何使用DESCryptoServiceProvider类对数据或者文件进行加密解密 194.如何统计在线人数 195.如何在ASP.NET实现验证码 ...

    风越.Net代码生成器 Fire.Net Creator v3.87

    默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...

    风越.net代码生成器 v3.5

    默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005中直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试...

    ASPNET35开发大全第一章

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    风越.net代码生成器v2.9

    默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...

    Java报表解决方案.zip.zip

    Cell 插件用于开发B/S结构程序,使用Asp, Asp.net, Jsp, VbScript, JavaScript等语言开发,可以在浏览器中直接打印报表(非IE打印),带有国际化数字签名,让用户使用更方便,更安全。 · 具备Cell组件的所有特色...

    风越asp代码生成器 V3.5

    默认提供asp、aspx WEB程序、.net普通三层框架程序、.net Windows程序,多种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序...

    风越ASP代码生成器2.8

    内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005中直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试...

    锐浪报表Grid++Report5.3

    10、特有的分组单元格合并功能,轻松实现常见的中国式报表分组在列中展现并垂直居中要求。 11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层...

    风越ASP代码生成器FireAspCreatorv2.9.rar

    《风越代码生成器 [FireCode Creator]》是一款采用.Net FrameWork2.0框架,基于多种数据库的程序代码生成软件,可快速建立数据信息的:添加、编辑、查看、列表、搜索页面。通过界面模板与代码模板管理功能,可自定义...

Global site tag (gtag.js) - Google Analytics