将Excel Sheet数据存储到sql server

时间:2014-02-01 07:12:07

标签: c# asp.net sql sql-server excel

我收到错误信息,如

  

初始化字符串的格式不符合从索引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();

1 个答案:

答案 0 :(得分:0)

嗯,我看到一件容易解决的事情......尝试改变:

SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);

是:

SqlBulkCopy sqlBulk = new SqlBulkCopy(excelConnection);


万一你还有问题...一般要点:

  1. 要知道在Google上搜索错误消息的技巧:将搜索字符串括在引号中。当我在"Format of the initialization string does not conform to specification starting at index 0"上搜索( QUOTES 非常关键)时,我发现很多的例子,所有这些都说:
  2. 这是连接字符串的问题。
  3. 当然,如果对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应用程序的用户可见或实时问题将更加可预测。

    希望有帮助...