博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将Excel数据导入至SqlServer中
阅读量:6230 次
发布时间:2019-06-21

本文共 1977 字,大约阅读时间需要 6 分钟。

/*使用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;     }            

}

转载地址:http://nytna.baihongyu.com/

你可能感兴趣的文章
2014.4.17—openflow代码流程
查看>>
leetcode-414-Third Maximum Number
查看>>
最新Android开源库、工具、开源项目整理分享
查看>>
Sql 获取当前日期没有时分秒
查看>>
mybatis_mapper动态代理
查看>>
CoreData一些基本概念
查看>>
1.java soap api操作和发送soap消息
查看>>
AJAX请求 $.ajaxSetup方法的使用
查看>>
background-size搭配transition实现鼠标hover背景图放大问题
查看>>
Redis分布式锁
查看>>
spark/java连接 kudu incompatible RPC? Error is: step 异常解决
查看>>
流程控制、数据类型(列表)
查看>>
vc6.0 获取ip(一)
查看>>
zt:华为手机的梦想:不破苹果终不还
查看>>
jzoj5990. 【北大2019冬令营模拟2019.1.6】Bear (状压dp)
查看>>
在CentOS上安装Python3的三种方法
查看>>
[PKUWC2018]随机算法
查看>>
《大话设计模式》读书笔记-第25章 中介者模式
查看>>
spring mvc-@CookieValue注解
查看>>
vue-router跳转到相同路由但页面没刷新
查看>>