SqlBulkCopy - 外部表不是预期的格式

时间:2011-06-07 07:07:06

标签: c# visual-studio-2010 sqlbulkcopy

我正在尝试按照 Import Excel Spreadsheet Data into SQL Server Database Table Using SqlBulkCopy 中的示例使用SqlBulkCopy。

我已经创建了表格和Excel表格,然后完成了编码,但我一直在

  

外部表格不符合预期格式。

connection.open()行。

如何摆脱这个问题?

    // Connection String to Excel Workbook
    String savePath = @"C:\TEMP\";

    String fileName = "upload.xls";
    savePath += fileName;
    //newpath += fileName;
    FileUpload1.SaveAs(savePath);

    string excelConnectionString =
        "Provider=Microsoft.Jet.OLEDB.4.0;" +
        "Data    Source=" + savePath + ";" +
        "Extended Properties=Excel 8.0;";

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

        connection.Open();

        // Create DbDataReader to Data Worksheet
        using (DbDataReader dr = command.ExecuteReader())
        {
            // SQL Server Connection String
            string sqlConnectionString = "Data Source=GRACC011334\\SQLEXPRESS;Initial Catalog=ComputerBroadcastNetwork;Integrated Security=True";

            // Bulk Copy to SQL Server
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
            {
                bulkCopy.DestinationTableName = "ExcelData";
                bulkCopy.WriteToServer(dr);
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

我明白了。我不得不改变连接字符串的格式并将其更改为

string excelConnectionString = (@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\TEMP\Book1.xls;Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"); 

答案 1 :(得分:0)

对我来说,此错误是由于尝试以较新的.xlsx文件格式从电子表格批量复制而导致的。在将电子表格转换为较旧的.xls格式之后,我能够在没有收到错误的情况下进行复制。

我使用上面指定的相同连接字符串

Provider = Microsoft.Jet.OLEDB.4.0和扩展属性= Excel 8.0

显然.xlsx文件需要不同的Provider和/或Extended Properties