我使用下面的连接字符串与ACE.OLEDB.12.0从XLSX电子表格中读取数据,但是我设置IMEX = 1,当我完全删除IMEX = 1时它不起作用,它工作正常.
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Working Folder\ICDE\Ramsden 4.xlsx;Extended Properties=""Excel 12.0 xml;HDR=No;IMEX=1;"""
Run Code Online (Sandbox Code Playgroud)
有谁能解释为什么?因为我的印象是IMEX = 1将所有数据作为文本读取,所以它更安全!
谢谢
J.P
IMEX = <0/1/2> IMEX指的是IMport EXport模式.这可能需要三个可能的值.
IMEX = 0且IMEX = 2将导致忽略ImportMixedTypes并使用默认值'Majority Types'.在这种情况下,它将占用前8行,然后确定每列的数据类型.
IMEX = 1是将ImportMixedTypes的值设置为Text的唯一方法.在这里,一切都将被视为文本.
Cia*_*rán 10
IMEX = 1 不会将所有数据作为文本返回.这是一个非常常见的误解.
OLEDB的作用是扫描前n行(默认值= 8)并确定数据类型.如果省略IMEX = 1,那么对于与该数据类型不匹配的任何值,它将返回Null.如果包含IMEX = 1并且扫描遇到混合数据类型,则它将返回文本.如果您的工作表有文本标题,那么您可以通过指定HDR = No并丢弃标题来帮助完成此过程.但是,OLEDB将始终扫描前n行以确定数据类型并相应地返回结果.
要扫描的行由TypeGuessRows的值确定.
较旧的Microsoft.Jet.OLEDB.4.0驱动程序允许您在连接字符串中指定TypeGuessRows但Microsoft.ACE.OLEDB.12.0不允许.TypeGuessRows现在保存在注册表中......
Excel 2007: HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows
Excel 2010: HKEY_LOCAL_MACHINE\Software\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows
Excel 2013: HKEY_LOCAL_MACHINE\Software\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows
Run Code Online (Sandbox Code Playgroud)
在64位计算机上运行的32位应用程序将在Wow6432Node下找到它们.例如..
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows
Run Code Online (Sandbox Code Playgroud)
在我看来这是一个倒退的步骤,但我必须有一个合理的理由.如果你找到一个让我们知道.
| 归档时间: |
|
| 查看次数: |
3864 次 |
| 最近记录: |