2013-05-28 39 views
0

我一直在试图找到一种方法来将数据类型字符串转换为nvarchar,同时我从Excel电子表格中导入数据。到目前为止,我有这段代码通过C#导入数据。将字符串转换为nvarchar(将excel导入到mssql)

// Connection String to Excel Workbook,Replace DataSource value to point to your excel file location 
    string excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Folder\\Folder\\Excel_File.xls ;Extended Properties=Excel 8.0"; 


    // 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 = "Data Source=localhost;Initial Catalog=DatabaseName;Integrated Security=True"; 

      // Bulk Copy to SQL Server 
      using (SqlBulkCopy bulkCopy = 
         new SqlBulkCopy(sqlConnectionString)) 
      { 
       bulkCopy.DestinationTableName = "Table_Name"; 
       bulkCopy.WriteToServer(dr); 
       MessageBox.Show("Data Exported To Sql Server Successfully"); 
      } 
     } 

我一直在寻求方法来从字符串转换为nvarchar但我已经找到了唯一的例子仅仅是用于将从文本框或通过控制台收集字符串。尽管日期类型中有一列,但我已经在MSSQL中得到了补偿。

如果有人可以给我一个我应该做的事情的示例代码,将不胜感激。

+1

什么是错误? – Romoku

+0

C#字符串是像nvarchar一样的Unicode,是不是?我想我不明白为什么需要转换。也许我不像我想的那么了解? –

+0

那么,当我尝试导入它告诉我“来自数据源的字符串类型的给定值不能转换为指定的目标列的类型nvarchar”。 – KuyaBraye

回答

0

我的怀疑是,你正在'绊倒'一些隐藏的字符,Excel插入到你的文本字符串中。尝试记录导入的数据以确保它是干净的。

+0

似乎这个excel电子表格是创建的,但它是一些通用格式。当我试图修改excel电子表格以将所有列设置为“文本”时,除了日期栏目之外,某些数据变为散列字符,例如“################# ###” – KuyaBraye