Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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数据库-不上载所有记录_C#_Asp.net_.net_Sql Server_Excel - Fatal编程技术网

C# 将数据从Excel复制到SQL数据库-不上载所有记录

C# 将数据从Excel复制到SQL数据库-不上载所有记录,c#,asp.net,.net,sql-server,excel,C#,Asp.net,.net,Sql Server,Excel,我正在使用ASP.NET 4.7网站将数据从Excel文件上载到SQL Server数据库。实际上这是一个DotNetNuke网站 我正在使用以下代码。这正是我在代码中使用的方法 因此,该代码正在工作,我可以将Excel数据传输到SQL Server数据库 我的问题是传输数据的限制 它并不是在传输所有的数据。当我有更多的记录和更多的列时,它只传输第一个记录 通常,我的Excel文件大约有3MB,有60000条或更多记录。但它只通过了大约18000-25000条记录。当我删除一些Excel列并只

我正在使用ASP.NET 4.7网站将数据从Excel文件上载到SQL Server数据库。实际上这是一个DotNetNuke网站

我正在使用以下代码。这正是我在代码中使用的方法

因此,该代码正在工作,我可以将Excel数据传输到SQL Server数据库

我的问题是传输数据的限制

它并不是在传输所有的数据。当我有更多的记录和更多的列时,它只传输第一个记录

通常,我的Excel文件大约有3MB,有60000条或更多记录。但它只通过了大约18000-25000条记录。当我删除一些Excel列并只传递少数列时,会增加记录数。当我只上传一列时,它就会传递所有记录。当我逐个添加列时,复制的记录数正在减少

我觉得,我们能够传递的数据是有限的。我怎样才能增加这个

web.config
中,我更改了如下设置:

<!-- allow large file uploads -->
<httpRuntime targetFramework="4.7.2" shutdownTimeout="21600" 
             executionTimeout="60000" useFullyQualifiedRedirectUrl="true" 
             maxRequestLength="2097151" requestLengthDiskThreshold="2097151" 
             maxUrlLength="2048" requestPathInvalidCharacters="&lt;,&gt;,*,%,:,\,?" 
             enableVersionHeader="false" requestValidationMode="2.0" 
             fcnMode="Single" />

但是没有运气。这并没有改变任何事情

<> P>我还有什么要考虑的?
  • 服务器设置?(我有RDP访问权限)
  • 应用程序池设置
  • 网站设置
  • SQL Server设置
  • 数据库设置
  • 我使用的代码有限制吗
请问,你能对此提出建议吗?我真的很感谢你在这方面的支持


谢谢。

我找到了这个问题的解决方案

我是这样使用我的连接字符串到excel文件的

<add name="Excel07+ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES;'" />

我添加了'IMEX=1;'像下面这样

<add name="Excel07+ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'" />


这解决了我的问题。非常感谢。

Excel 2003每个工作表(xls)的行数限制为64000行。在2007+(xlsx)中可以有更多行。因此,如果您对oledb使用JET驱动器(或指定xls文件名),您将被限制为64000行。最近我发现在最新的excel和xlsx文件中,每个工作表只能导入1000000行。我只能通过18151或类似的测试。如果我删除一些列,那么我可以传递更多。我使用的是我问题中参考链接的精确代码。您可能在18151行有错误数据。尝试IMEX选项。请参阅:。列1是否每行都有数据?否。这不是原因。我使用了不同的文件和不同的数据。18151就是我说的例子。如果我一列一列地删除记录,那么记录数就会相应地增加。请问,有人能帮我吗?我真的很感谢你对我的支持。谢谢,这是我的建议。使用IMAX将数据视为文本而不是对象。JET/ACE将数据视为Excel对常规格式的处理,并尝试猜测类型。经常猜错。IMAX禁用猜测并将数据视为字符串。是。我非常感谢你的大力支持。我不知道如何使用IMEX选项,也不知道有这样的选项。你的经验太有帮助了,无法找到这个解决方案。非常感谢。