gpt4 book ai didi

.net - 使用 ACE.OLEDB.12.0 和 IMEX=1 读取 Excel 工作表不起作用

转载 作者:行者123 更新时间:2023-12-02 09:17:54 27 4
gpt4 key购买 nike

我使用下面的连接字符串与 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;"""

谁能解释一下为什么吗?因为我的印象是 IMEX=1 将所有数据读取为文本,因此更安全!

谢谢

日本

IMEX=<0/1/2>IMEX是指IMport EXport模式。这可以采用三个可能的值。

IMEX=0 和 IMEX=2 将导致忽略 ImportMixedTypes,并使用默认值“Majority Types”。在本例中,它将获取前 8 行,然后决定每列的数据类型。

IMEX=1 是将 ImportMixedTypes 的值设置为 Text 的唯一方法。在这里,所有内容都将被视为文本。

最佳答案

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

在 64 位计算机上运行的 32 位应用程序将在 Wow6432Node 下找到它们。例如...

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows

在我看来这是一种倒退,但我想一定有其正当的理由。如果您找到了,请告诉我们。

关于.net - 使用 ACE.OLEDB.12.0 和 IMEX=1 读取 Excel 工作表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46170343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com