zoukankan      html  css  js  c++  java
  • 将Excel数据导入至SqlServer中

    /*使用OleDb连接*/

    using System.Data.OleDb;

    public int TransferData(string excelFile, string sheetName, string connectionString,int WeekId)

    {    

      DataSet ds = new DataSet();    

          string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + excelFile + "';Extended Properties='Excel 8.0;HDR=YES;'";    

       if (excelFile.ToLower().IndexOf(".xlsx") > 0)    

          {

             strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + excelFile + "';Extended Properties='Excel 12.0;HDR=YES'";    

          }    

          if (excelFile.ToLower().IndexOf(".xls") > 0 && excelFile.EndsWith("xls"))    

         {        

               strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + excelFile + "';Extended Properties='Excel 8.0;HDR=YES;'";    

         }

         OleDbConnection conn = new OleDbConnection(strConn);    

         conn.Open();    

         //获取全部数据    

         try     {

            string strExcel = "";        

            OleDbDataAdapter myCommand = null;        

            strExcel = string.Format("select * from [{0}$]", sheetName);        

            myCommand = new OleDbDataAdapter(strExcel, strConn);        

            myCommand.Fill(ds, sheetName);        

            ds.Tables[0].Columns.Add("WeekId", Type.GetType("System.Int32"));        

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)        

           {            

               ds.Tables[0].Rows[i]["WeekId"] = WeekId;        

           }        

           //如果目标表不存在则创建        

           string strSql = string.Format("if object_id('{0}') is null create table {0}(", sheetName);        

           foreach (System.Data.DataColumn c in ds.Tables[0].Columns)        

           {            

                 strSql += string.Format("[{0}] varchar(255),", c.ColumnName);        

            }

            strSql = strSql.Trim(',') + ")";

            using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection(connectionString))        

            {            

                 sqlconn.Open();            

                 System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand();

                 command.CommandText = strSql;            

                 command.ExecuteNonQuery();            

                 sqlconn.Close();        

            }        

            //用bcp导入数据        

             using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString))        

            {

                bcp.BatchSize = 100;//每次传输的行数            

                bcp.NotifyAfter = 100;//进度提示的行数            

                bcp.DestinationTableName = sheetName;//目标表            

                bcp.WriteToServer(ds.Tables[0]);        

             }        

             conn.Close();        

             return 1;                    

            }     catch (Exception ex)     {         conn.Close();         return 0;     }            

    }

  • 相关阅读:
    Java 8 CompletableFuture思考
    Math.ceil 笔记
    Python virtual env
    Reactive Stream: 如何将两个数据流接到一起,然后进行操作
    基于Apollo实现.NET Core微服务统一配置(测试环境-单机)
    在ASP.NET Core 2.x中获取客户端IP地址
    Entity Framework Core(3)-配置DbContext
    .NET Core2.1下采用EFCore比较原生IOC、AspectCore、AutoFac之间的性能
    Entity Framework Core 入门(2)
    Entity Framework Core介绍(1)
  • 原文地址:https://www.cnblogs.com/oftenlin/p/2672079.html
Copyright © 2011-2022 走看看