分享

将Excel数据保存至Sqlserver

 悟静 2012-06-10

在此仅提供一种方法。
1、将Excel文件上传至服务器的指定目录内;
2、数据量较小且Sqlserver表中具有与Excel表字段一致或包含。
------------------------------------------------------------------------------
//准备基本参数。(1、读取Excel数据到DataSet中来,2、将DataSet中的数据一次性写入到SqlServer中。)

    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +filepath+";Extended Properties=Excel 8.0;";
    OleDbConnection conn = new OleDbConnection(strConn);
    conn.Open ();

    //以下语句中[sheet1$]是定义在Excel中的数据表名称,并且第一行需要包含列名,空行(特别是最后的空行),都需要删除,保证数据区域的方块性。
    OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [sheet1$]", strConn);
    DataSet ExcelDataSet = new DataSet();
    myCommand.Fill(ExcelDataSet);

    //建立写SqlServer的连接。
    strConn=System.Configuration.ConfigurationSettings.AppSettings["linktodata"].ToString();
    SqlConnection sqlConnection=new SqlConnection(strConn);

    string strSQL="select * from personinfo where 1=0";//两个数据表一定要具有相同的结构.特别是数据类型.如果personinfo表中存在数据,则先要执行删除.
    SqlDataAdapter sqlDataAdapter=new SqlDataAdapter(strSQL,sqlConnection);
    //建立适配器中Sql语句。
    SqlCommandBuilder sqlCommandBuilder=new SqlCommandBuilder(sqlDataAdapter);
    //生成接收数据的数据集.
    DataSet sqlData=new DataSet();
    sqlDataAdapter.Fill(sqlData);
    //在内存中进行数据赋值
    try
    {
     foreach(DataRow dr in ExcelDataSet.Tables[0].Rows)
     {
      DataRow r=sqlData.Tables[0].NewRow();//建立与表一致数据类型的行.
      r["序号"]=dr["序号"];
      r["单位"]=dr["单位"];
      r["姓名"]=dr["姓名"];
      r["身份证号码"]=dr["身份证号码"];
      sqlData.Tables[0].Rows.Add(r);//将行加入到数据表中.
     }

     sqlDataAdapter.Update(sqlData);//执行适配器更新事件,将DataSet中的数据保存至后台SqlServer中.
    }
    catch(Exception exec)
    {
     msg.Text ="两个数据表的数据字段或类型不一致!"+exec.ToString();
     return;
    }


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多