2014-01-24 95 views
2
string path = string.Concat(Server.MapPath("~/TempFiles/"), FileUpload1.FileName); 
//Save File as Temp then you can delete it if you want 
FileUpload1.SaveAs(path); 


string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path); 

// Create Connection to Excel Workbook 
using (OleDbConnection connection = 
      new OleDbConnection(excelConnectionString)) 
{ 
    OleDbCommand command = new OleDbCommand 
      ("Select * FROM [Sheet1$]", connection); 

    connection.Open(); 

    // Create DbDataReader to Data Worksheet 
    using (DbDataReader dr = command.ExecuteReader()) 
    { 

     // SQL Server Connection String 
     string sqlConnectionString = @conn; 

     // Bulk Copy to SQL Server 
     using (SqlBulkCopy bulkCopy = 
        new SqlBulkCopy(sqlConnectionString)) 
     { 
      bulkCopy.DestinationTableName ="Table1"; 
      bulkCopy.WriteToServer(dr); 
      Label1.Text = "The Client data has been exported successfully from Excel to SQL"; 
     } 
    } 
} 

我試圖從Excel到SQL Server導入數據,它工作得很好,直到我沒有通過的日期,但現在我想傳遞的日期到SQL Server提供由於數據類型不匹配而導致錯誤。導入數據從Excel到SQL Server 2008#2

任何人有邏輯或請建議我,我能做些什麼來..

回答

0

DateTime從Excel中讀取OLE自動化日期,你必須把它轉換爲C#DateTime你插入到SQL Server之前。從excel中讀取日期會是雙重價值。您可以使用DateTime.FromOADate將雙倍值轉換爲DateTime。你可以使用SqlBulkCopy.WriteToServer(DataTable table),這個方法允許你傳遞數據表。您可以按需格式更改數據表中的日期,並將其用於在sql server中保存批量數據。您可以將excel數據導入數據表,這article將幫助你。

DateTime dt = DateTime.FromOADate(double.Parse(stringVariableContainingDateTime)); 
+0

我怎麼能轉換它,因爲我導入數據在BU lk .. 是否有任何東西可以導入到數據表中,然後導入到sql服務器,以便我們可以檢查數據表中的每個數據並將其轉換爲 – user2919184

+0

檢查我的更新答案。 – Adil

+0

你好,因爲我是新來的asp我不知道,但我檢查了..我使用datareader nd我正在執行datareader插入我的價值,如果我寫入數據表,然後如何執行它的數據值插入我的數據? ? n thanx爲您的回覆 – user2919184

0

可能是Excel工作表中的列不是有效的日期格式。

將其更改爲日期類型。

Select the Column in the Excel Sheet -> Right Click -> Format Cells -> 
Number Tab -> Select Date -> Choose your desired Type -> Ok 

然後嘗試導入...

+0

我曾試過這個,但不工作... 你有沒有試過這個? – user2919184

0

它的工作原理我試圖把它轉換成datatble書房變化的數據類型,然後再插入

string sqlConnectionString = @conn; 
command.CommandType = CommandType.Text; 
       OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(command); 
       DataTable dt = new DataTable(); 
       DataSet objDataset1 = new DataSet(); 

       objAdapter1.Fill(dt); 

       for (int i = 0; i < dt.Rows.Count; i++) 
       { 
        if (dt.Rows[0][5].ToString() != "") 
        { 
         DateTime dt1 = cf.texttodb(dt.Rows[0][5].ToString()); 
         dt.Rows[i][5] = dt1; 
        }} 
using (SqlBulkCopy bulkCopy = 
           new SqlBulkCopy(sqlConnectionString)) 
       { 
        bulkCopy.DestinationTableName = "Tablename"; 
        bulkCopy.WriteToServer(dt); 
        Label1.Text = "The Client data has been exported successfully from Excel to SQL"; 
       } 
在此

我創造了一個功能txtdob其我的字符串轉換爲日期時間格式 謝謝 我試過它,如果你覺得如此標記它作爲答案

相關問題