2011-06-07 25 views
0

我想在Import Excel Spreadsheet Data into SQL Server Database Table Using SqlBulkCopy使用SqlBulkCopy的按例子。SqlBulkCopy的 - 外部表不是预期的格式

我已经创建表和Excel工作表确定并完成了编码,但我不断收到

外部表不是预期的格式。

at connection.open() line。

我该如何摆脱这个问题?

// 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); 
      } 
     } 
    } 
+0

显示一些代码。你在哪里创建连接?你在哪里创建SBC对象? – 2011-06-07 07:08:30

回答

0

我明白了。我不得不改变连接字符串的格式,并把它改成

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

对于我这个错误是由从较新的.xlsx文件格式的电子表格试图批量复制引起的。将电子表格转换为较旧的.xls格式后,我可以在不接收错误的情况下进行拷贝。

我使用你上面指定的同一个连接字符串,

提供商= Microsoft.Jet.OLEDB.4.0和扩展属性= Excel的8.0

因此很明显的.xlsx文件需要不同的供应商和/或扩展属性

相关问题