【问题标题】:Convert string to nvarchar (import excel to mssql)将字符串转换为 nvarchar(将 excel 导入 mssql)
【发布时间】:2013-05-28 14:50:25
【问题描述】:

当我从 Excel 电子表格导入数据时,我一直在尝试找到一种将数据类型字符串转换为 nvarchar 的方法。到目前为止,我有这段代码可以通过 C# 导入数据。

// 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 中对其进行了补偿。

如果有人能给我一个我应该做什么的示例代码,将不胜感激。

【问题讨论】:

  • C# 字符串和 nvarchar 一样是 Unicode,不是吗?我想我不明白为什么需要转换它。也许我没有我想的那么多?
  • 好吧,当我尝试导入时,它告诉我“来自数据源的 String 类型的给定值无法转换为指定目标列的 nvarchar 类型。”

标签: c# sql-server string excel nvarchar


【解决方案1】:

我的怀疑是您“绊倒”了 Excel 在您的文本字符串中插入的一些隐藏字符。尝试记录导入的数据以确保它是干净的。

【讨论】:

  • 看起来,不管这个 Excel 电子表格是如何创建的,它都是某种通用格式。当我尝试修改excel电子表格以使所有列都成为“文本”时,当然除了日期列之外,一些数据变成了哈希字符,例如“################# ###"
猜你喜欢
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 2011-11-28
  • 2015-11-17
相关资源
最近更新 更多