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

c# sqlbulkcopy visual-studio-2010

我正在尝试按照使用SqlBulkCopy将Excel电子表格数据导入SQL Server数据库表中的示例使用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);
            }
        }
    }

一般承认的答案

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

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

热门答案

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

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

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

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




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因