混合类型的.xls文件的adodb导入的替代解决方案

时间:2019-07-17 15:00:57

标签: c# excel ado

我目前正在维护在客户服务器上运行的旧应用程序。

应用程序的任务之一是通过.xls文件导入地址数据。 这是通过打开应与ADODB-Connection导入的excel文件来实现的。 这确实很好-但是,如果excel文件包含多种类型的数据类型(在我的示例中为80个数字值和2个字母数字值),则数据读取器只会将字母数字值读出为“ NULL”。

根据我发现的许多文章和帖子,这种行为是正常的。

克服该行为的默认建议方法是更改​​Connectionstring和/或将TypeGuessRows的设置更改为0(因此,它读取excel文件的所有行不仅是默认的8行)。

这些方法都不适合我,因此我正在寻找替代或其他解决方案。

简要概述应用程序使用的环境:

  • 操作系统:Windows Server 2012 R2
  • 服务器上安装的Excel版本: 2013
  • Microsoft ActiveX数据对象库使用的版本 应用程序:2.8
  • 使用的.net版本:2.0

到目前为止,我已经尝试过:

  • 在注册表中设置TypeGuessRows键(对于JET 4.0和Excel 12.0)
  • 为2007-2013年的所有excel版本测试各种连接字符串
  • 将IMEX = 1-param添加到连接字符串以设置importmode
  • 将MaxScanRows = 16添加到连接字符串
  • 通过打开和读取文件的各种版本来测试结果(例如,一个只有5行的版本-2个字母数字,3个数字;其他版本则逐行缩小文件直到其为空,等等。)< / li>
  • 导入文件是由macintosh版本的excel创建和更改的,因此我已使用excel 2013将其打开并再次将其保存为.xls-file

我研究和尝试过的解决方案的来源:

使用的连接字符串如下所示-文件路径由变量添加,该变量将其放入连接字符串变量:

strConnString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + strImportFile + ";DefaultDir=c:\\;DriverID=790;";

0 个答案:

没有答案