作者:洛熙难耐_467 | 来源:互联网 | 2024-12-13 10:53
在尝试使用OleDb提供程序读取Excel文件时,遇到了一个特定的问题:虽然在开发环境(调试模式)下能够成功读取所有记录,无论文件大小如何,但在将应用部署到IIS后,读取的行数显著减少,仅能读取27043行,而非全部记录。这个问题看似与文件大小无关,而是与IIS的配置有关。
使用的连接字符串为:
"Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0 XML;HDR=YES;';Data Source=FileName.xlsx;"
此连接字符串允许通过SQL查询(如“SELECT * FROM [SheetName$]”)从Excel文件中读取数据。
尽管尝试调整IMEX值为1以解决混合数据类型的问题,但这并未能解决问题。IMEX设置通常用于处理Excel表格中包含不同数据类型的列,但在此案例中,问题的核心在于IIS的配置限制。
为了解决这一问题,可以通过修改web.config文件增加请求的最大长度和执行超时时间,具体配置如下:
上述配置增加了HTTP请求的最大长度限制(maxRequestLength)至1GB,并将执行超时时间(executionTimeout)设置为90秒,同时允许更大的内容长度(maxAllowedContentLength)至2GB,这有助于确保大文件的完整读取。
这些更改应在很大程度上解决了由于IIS默认配置导致的大文件处理问题,使应用程序能够在生产环境中像在开发环境中一样,正确地读取所有Excel记录。
如果您遇到类似的问题或对上述解决方案有任何疑问,欢迎留言讨论。