Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Excel工作表数据存储到sql server_C#_Asp.net_Sql_Sql Server_Excel - Fatal编程技术网

C# 将Excel工作表数据存储到sql server

C# 将Excel工作表数据存储到sql server,c#,asp.net,sql,sql-server,excel,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 w

我收到的错误消息如下

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

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

  • 在谷歌上搜索错误信息的诀窍是:用引号括起你的搜索字符串。当我搜索
    “初始化字符串的格式不符合从索引0开始的规范”
    引号是关键的)时,我发现了很多示例,所有示例都表示:
  • 这是连接字符串的问题
  • 当然,如果对
    excelConnection
    的更改有帮助,请告知我们。。。无论你是否还有其他问题。。。如果您的最终代码有很大不同,请将最终代码作为“更新”添加到问题的底部:

    另外两个问题:
    (A) 您使用的是哪一版本的SQL Server(了解该版本通常很有帮助)
    (B) 您是否考虑过先将Excel电子表格导入SQL Server,然后将其作为表访问?在ManagementStudio(或Enterprise Manager)中,如果右键单击数据库名称,然后转到“任务”,您将看到一个导入数据的选项。在SQL Server 2005或更高版本中,该向导使用SSI;在SQLServer2000中,该向导使用DTS

    如果您想要的只是一次性导入,那么这些向导是一种更简单的方法

    考虑到此导入将被重复使用,用于随时间更新的电子表格。。。我还是先考虑导入SQLServer,因为如果你说的是一个人类正在更新的Excel电子表格,你很可能会遇到格式可预测性的问题:人类是否粘贴了一些特定的(不同)格式的单元格?(这可能会导致空/空数据…尤其是SSI——DTS更宽容。)他们是否尝试在电子表格中创建新选项卡?(这将有效地更改您的
    :表名必须与Excel中“选项卡”的名称相匹配。)当然,这些事件同样会影响导入SQL Server。。。但至少导入目标(SQL Server表)可以始终存在,并且格式始终相同,因此影响网页/ASP.NET应用程序的用户可见或实时问题将更容易预测


    希望这有助于

    能否添加有关
    fileuploadExcel
    Request
    strConnection
    的信息。需要哪些名称空间,它们是如何实例化的?