2016-08-30 25 views
0

蔭試圖插入散裝的excel到SQLSqlBulkCopy的給出浮充轉換(asp.net C#)

sqlBulk.WriteToServer(dReader);誤差給出錯誤

String類型的數據源中的給定值不能 轉換爲指定目標列的float類型。

蔭使用以下代碼

System.Data.SqlClient.SqlConnection strConnection; 
    strConnection = new System.Data.SqlClient.SqlConnection("Data Source=L06DPSGCD0001;Initial Catalog=ProductionEfficiency;User ID=sample;Password=sample"); 

    string path = ("C:\\Users\\s3802616\\Desktop\\" + (FileUpload1.FileName)); 

    System.Diagnostics.Debug.WriteLine("C:\\Users\\s3802616\\Desktop\\" + (FileUpload1.FileName)); 
    string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\""; 
    //Create Connection to Excel work book 

    OleDbConnection excelConnection = new OleDbConnection(excelConnectionString); 
    //Create OleDbCommand to fetch data from Excel 

    OleDbCommand cmd = new OleDbCommand("Select [Model],[Process],[STD_Hours],[UOM],[Section] from [Sheet1$]", excelConnection); 
    //OleDbCommand cmd = new OleDbCommand("Select * from [Sheet1$]", excelConnection); 
    excelConnection.Open(); 
    strConnection.Open(); 
    OleDbDataReader dReader; 
    dReader = cmd.ExecuteReader(); 
    SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection); 
    //Give your Destination table name 

    sqlBulk.DestinationTableName = "dbo.tblProcessStdHours"; 
    sqlBulk.WriteToServer(dReader); 
    excelConnection.Close(); 
    strConnection.Close(); 
    lblStatus.Text = "Uploaded Successfully"; 

PLS推薦。

回答

1

錯誤說明了一切。

您正試圖將「字符串/字符」複製到「float」類型的目標列中。

您需要將數據庫表「dbo.tblProcessStdHours」中的目標列的數據類型更改爲varchar。

+0

我也試過,它給出了{「從數據源的類型字符串的給定值不能轉換爲指定目標列的類型nvarchar」} –

+0

嘗試與varchar –

+0

我將所有更改爲一個一個varchar,最後它顯示「收到來自bcp客戶端的colid 1的無效列長度」。我認爲這是因爲Sl。在sql中自動生成的列。如何使它在Excel中或我需要從Sql中刪除「Sl」序列號。 –