我收到错误信息,如
初始化字符串的格式不符合从索引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();
答案 0 :(得分:0)
嗯,我看到一件容易解决的事情......尝试改变:
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
是:
SqlBulkCopy sqlBulk = new SqlBulkCopy(excelConnection);
万一你还有问题...一般要点:
"Format of the initialization string does not conform to specification starting at index 0"
上搜索( QUOTES 非常关键)时,我发现很多的例子,所有这些都说:当然,如果对excelConnection
的更改有帮助,请告诉我们......您是否还有其他问题......如果您的最终代码有很大不同,请将最终代码添加到底部您的问题为“更新:”
另外两个问题:
(A)您正在使用哪种版本的SQL Server(通常有助于了解)?
(B)您是否考虑首先将Excel电子表格导入SQL Server,然后将其作为表格访问?在Management Studio(或企业管理器)中,如果右键单击数据库名称,然后转到“任务”,您将看到导入数据的选项。在SQL Server 2005或更高版本中,该向导使用SSIS;在SQL Server 2000中,该向导使用DTS。
如果你想要的只是一次性导入,那些向导就更容易了。
考虑到要重新使用此导入,对于随时间更新的电子表格...我仍然会考虑首先导入到SQL Server,因为如果您正在讨论正在更新的Excel电子表格通过人类,你很可能会遇到格式可预测性的问题:人类是否粘贴了某些具有特定(不同)格式的单元格? (这可能导致NULL /空数据...尤其是SSIS - DTS更宽容。)他们是否尝试在电子表格中创建新选项卡? (这有效地改变了您的FROM
:“tablename”必须与Excel中“tab”的名称相匹配。)当然,这些事件可以同样影响导入SQL Server ...但至少导入目标 - SQL Server表 - 可以始终存在,并且始终采用相同的格式,因此影响网页/ ASP.NET应用程序的用户可见或实时问题将更加可预测。
希望有帮助...