2014-01-24 58 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其我的字符串转换为日期时间格式 谢谢 我试过它,如果你觉得如此标记它作为答案

相关问题