【问题标题】:select query at excel sheet在 Excel 工作表中选择查询
【发布时间】:2012-08-01 13:48:03
【问题描述】:

我对选择查询有疑问。我的目标是在 excel 表中选择一些列并将它们复制到我的 sql 表中。我有六列要复制。当我尝试复制由于标识列而更改的订单时。

这是我的代码;

  string path = Server.MapPath(Session["excel_sheet"].ToString());
        //Create connection string to Excel work book
        string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False";
        //Create Connection to Excel work book
        OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
        //Create OleDbCommand to fetch data from Excel
        OleDbCommand cmd2 = new OleDbCommand("Select [column_1],[column_2],[column_3],[column_4],[column_5],[column_6] from [Sheet1$]", excelConnection);
        excelConnection.Open();
        OleDbDataReader dReader;
        dReader = cmd2.ExecuteReader();
        SqlBulkCopy sqlBulk = new SqlBulkCopy(con);
        //Give your Destination table name
        sqlBulk.DestinationTableName = "MYtable";
        sqlBulk.WriteToServer(dReader);
        excelConnection.Close();

我的表有这样的列 identity_column,column_1,column_2,column_3,column_4,column_5,column_6。

例如在 excel column_4 字符串中的副本写入 sql column_3 后,它必须写入 column_4 。我正在等待答案

【问题讨论】:

    标签: c# sql excel


    【解决方案1】:

    您可以遍历列并映射它们,这会将excel中的列名映射到连接中的相同名称(即Excel column_1 = sql column_1)

        SqlBulkCopy sqlBulk = new SqlBulkCopy(con);
           //Define column mappings 
    
        for (int i = 0; i < dReader.FieldCount; i++)
        {
            sqlBulk.ColumnMappings.Add(dReader.GetName(i), dReader.GetName(i));
         }
    

    【讨论】:

      【解决方案2】:

      您应该使用 SqlBulkCopy 类的 ColumnMappings 属性。

      例如:

      sqlBulk.ColumnMappings.Add("column_1", "column_1");
      
      sqlBulk.DestinationTableName = "MYtable";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 1970-01-01
        • 2015-10-12
        • 1970-01-01
        • 2015-12-07
        • 1970-01-01
        相关资源
        最近更新 更多