将Excel工作表数据存储到SQL Server

我收到类似的错误消息

初始化string的格式不符合从索引0开始的规范。

导出Excel文件时。 请指教

这是我的代码:

string file = string.Format("{0}\\{1}", Request.PhysicalApplicationPath,Guid.NewGuid().ToString().Replace("-",string.Empty)); fileuploadExcel.SaveAs(file); //Create connection string to Excel work book string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HRD=YES;IMEX=1'", fileuploadExcel.PostedFile.FileName); //Create Connection to Excel work book OleDbConnection excelConnection =new OleDbConnection(file); //Create OleDbCommand to fetch data from Excel OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Desi] from [Varun]", excelConnection); excelConnection.Open(); OleDbDataReader dReader; dReader = cmd.ExecuteReader(); SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection); //Give your Destination table name sqlBulk.DestinationTableName = "Excel_table"; sqlBulk.WriteToServer(dReader); excelConnection.Close(); 

那么,我看到一件很容易解决的事情…尝试改变:

 SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection); 

成为:

 SqlBulkCopy sqlBulk = new SqlBulkCopy(excelConnection); 

如果你仍然有问题…一般的观点:

  1. 要了解在Google上search错误消息的技巧:将searchstring用引号引起来。 当我search"Format of the initialization string does not conform to specification starting at index 0"QUOTES是关键的)时,我发现了很多的例子,所有这些例子说:
  2. 这是连接string的问题。

当然,请让我们知道,如果对excelConnection的更改有帮助…是否还有其他问题…如果您的最终代码有很大的不同,请将最终代码作为“更新: “

另外两个问题:
(A)你正在使用什么版本的SQL Server(通常有助于了解)?
(B)您是否考虑过先将Excel电子表格导入到SQL Server中,然后将其作为表格进行访问? 在Management Studio(或企业pipe理器)中,如果右键单击数据库名称,则转到“任务”,您将看到一个导入数据的选项。 在SQL Server 2005或更高版本中,该向导使用SSIS; 在SQL Server 2000中,该向导使用DTS。

如果你想要的只是一次性导入,这些向导是一个更容易的方法。

考虑到这个导入是重复使用的,对于随着时间的推移而更新的电子表格…我仍然会考虑先导入到SQL Server,因为如果你正在讨论一个由人类更新的Excel电子表格,你很可能会遇到格式可预测性的问题:人类是否以特定的(不同的)格式粘贴某些单元格? (这可能会导致NULL /空的数据…尤其是与SSIS – DTS更宽容。)他们试图在电子表格中创build一个新的标签? (这有效地改变你的FROM :“表名”必须与Excel中的“选项卡”的名称相匹配。)当然,这些事件可以类似地影响导入到SQL Server …但至less导入目标 – SQL服务器表 – 可以始终存在,并始终是相同的格式,所以影响您的网页/ ASP.NET应用程序的用户可见或实时问题将更容易预测。

希望有帮助…