zoukankan      html  css  js  c++  java
  • ASP.NET 将Excel导入数据库

    将Excel导入数据库大致流程:  Excel数据->DataSet->数据库

    需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGrid也需要。

    此为背景

    ---------------------------割割快乐--------------------------------------------------------------------------

    1.将Excel读入到DataSet中:

      首先用OleDbDataAdapter这个小桥梁把Excel中的数据选出来,为什么Excel中的数据能够用OleDbDataAdapter选出来呢?这就是微软从中做了手脚,把Excel当做一个Access数据库表来看,所以就把Excel数据导入数据库转化成了数据库与数据库之间通过DataSet这个掮客传递数据的故事。那么这个手脚是怎么做的呢?问我我也不知道,我们只需要安装微软提供的Office system 驱动程序的数据连接组件,才不会报未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序的错。

    分析完了就看代码:

            DataSet dsRet = new DataSet();
    //OleDbDataAdapter的操作SQL语句,[Sheet1$]是你Excel表格的sheet名字,[]和$不能少
    string sqlabc = "select * from [Sheet1$]";
    //OleDbDataAdapter的连接字符串,那个filePath就是你本地Excel的路径,其余就是照抄,不能写错
    string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=No;IMEX=1'"; OleDbDataAdapter oada = new OleDbDataAdapter(sqlabc, strConn); oada.Fill(dsRet,"Result");

    这样就把Excel里面的数据放到DataSet里面了。

    2.将DataSet里的数据放到数据库(Oracle为例)中

    这里我用的是最笨的方法,用循环一行一行往里硬插,当然了,有人说用这种方法方便:首先把源数据表选出来的数据存入DataSet1,把我从Excel中取的数据存入DataSet2,然后用DataSet的Merge方法合并到DataSet1中,最后用XXXDataAapter的update方法更新数据库。不过这样没成功,原因是因为你Excel的表头是A,B,C...等等,而你DataSet1的表头是你为数据库的数据自己写的有意义的字段名,你横不能把数据库中的表的字段叫A,B,C吧!所以还是一个一个插稳妥。

    分析完了看代码:

           string connt = "Data Source=172.20.65.236;User Id=bjmedicare_qy;Password=bjmedicare_qy";//连接数据库
            string sql = "insert into test_m(F1,F2,F3,s_month,oper) values(:F1,:F2,:F3,:S_MONTH,:OPER)";//必须与数据库字段名一致  
    OracleConnection conn = new OracleConnection(connt); conn.Open(); OracleCommand cmd = new OracleCommand(sql, conn); //循环着插,还能插入自己设定的数据 for (int i = 0; i < ds.Tables["Result"].Rows.Count; i++) { //这里需要考虑数据格式 cmd.Parameters.Add("F1", OracleType.VarChar).Value = ds.Tables["Result"].Rows[i][0]; cmd.Parameters.Add("F2", OracleType.VarChar).Value = ds.Tables["Result"].Rows[i][1]; cmd.Parameters.Add("F3", OracleType.Number).Value = ds.Tables["Result"].Rows[i][2]; cmd.Parameters.Add("S_MONTH", OracleType.VarChar).Value = DateTime.Now.ToString("yyyyMM"); cmd.Parameters.Add("OPER", OracleType.VarChar).Value = "admin"; } conn.Close(); conn.Dispose();

    这样就基本完成了题目所要求的内容。

  • 相关阅读:
    SOUI更新到2.0
    第三十一篇:SOUI布局之相对于特定兄弟窗口
    SOUI与WTL
    在SOUI中非半透明窗口如何实现圆角窗口?
    拥抱ARM妹纸第二季 之 第一次 点亮太阳
    拥抱ARM妹子第二季 之 序:我和春天有个约会
    解决自定义控件窗体缩放时闪烁
    The 50 Most Essential Pieces of Classical Music
    嵌入式开发目录
    C中浮点数转字符串
  • 原文地址:https://www.cnblogs.com/JhoneLee/p/3208996.html
Copyright © 2011-2022 走看看