我正在尝试按照 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);
}
}
}
答案 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