Asp.Net网页导入Excel到数据库

发布于:2016年02月24日    浏览:851 次    属于:Web开发 > Asp.Net开发 原创作者:张晓栋

 

在开发一些管理系统的时候由于原始数据一般都是采用Excel保存的,所以我们需要开发一个网页的Excel导入功能,接下来主要示范Excel的导入模块代码,其他插入条件等可以根据自己的业务需求来考虑,本次使用的方法只可以导入Excel2003文件后缀为xls的 Excel文件,对于Excel2007,2010,2013等较新的版本请先将Excel源文件转换为2003的版本后再导入。


    // 查询EXCEL电子表格添加到DATASET  

    public DataSet ExecleDs(string filenameurl, string table)

    {

        string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";

        OleDbConnection conn = new OleDbConnection(strConn);

        conn.Open();

        DataSet ds = new DataSet();

        OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);

        odda.Fill(ds, table);

        return ds;

    }

    // Excel导入数据  

    protected void Button1_Click(object sender, EventArgs e)

    {

        if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件  

        {

            Response.Write("<script>alert('请您选择Excel文件')</script> ");

            return;//当无文件时,返回  

        }

        string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名  

        if (IsXls != ".xls")

        {

            Response.Write("<script>alert('只可以选择Excel文件')</script>");

            return;//当选择的不是Excel文件时,返回  

        }

        MySqlConnection cn = new MySqlConnection(strConn);

        cn.Open();

        string filename = DateTime.Now.ToString("yyyymmddhhMMss") + FileUpload1.FileName;              //获取Execle文件名  DateTime日期函数  

        string savePath = Server.MapPath(("~\\Upload\\") + filename);//Server.MapPath 获得虚拟服务器相对路径  

        FileUpload1.SaveAs(savePath);                        //SaveAs 将上传的文件内容保存在服务器上  

        DataSet ds = ExecleDs(savePath, filename);           //调用自定义方法  

        DataRow[] dr = ds.Tables[0].Select();            //定义一个DataRow数组  

        int rowsnum = ds.Tables[0].Rows.Count;

        if (rowsnum == 0)

        {

            Response.Write("<script>alert('Excel表为空表,无数据!')</script>");   //当Excel表为空时,对用户进行提示  

        }

        else

        {

            for (int i = 0; i < dr.Length; i++)

            {

                string name = dr[i]["姓名"].ToString();

                string zkzh = dr[i]["准考证号"].ToString();

                string sex = dr[i]["性别"].ToString();

                string school = dr[i]["学校"].ToString();

                string zb = dr[i]["组别"].ToString();

                string cj = dr[i]["成绩"].ToString();

                string dj = dr[i]["等级"].ToString();

                string sftg = dr[i]["是否通过"].ToString();

                string mc = dr[i]["名次"].ToString();

                string sf = dr[i]["省份"].ToString();

                string cs = dr[i]["城市"].ToString();


                string insertstr = "insert into cms_cj (name,zkzh,sex,school,zb,cj,dj,sftg,mc,sf,cs) values('" + name + "','" + zkzh + "','" + sex + "','" + school + "','" + zb + "','" + cj + "','" + dj + "','" + sftg + "','" + mc + "','" + sf + "','" + cs + "')";

                MySqlCommand cmd = new MySqlCommand(insertstr, cn);

                try

                {

                    cmd.ExecuteNonQuery();

                }

                catch (MembershipCreateUserException ex)       //捕捉异常  

                {

                    Response.Write("<script>alert('导入内容:" + ex.Message + "')</script>");

                }

            }

            Response.Write("<script>alert('Excle表导入成功!');location='Cj.aspx'</script>");

        }

        cn.Close();

    }