使用C#/ OLEDB从Excel导入时值会更改

Values changing when importing from Excel with C#/OLEDB

我正在尝试使用OLEDB将Excel电子表格中的一些数据导入到我的C应用程序中。我将标准连接字符串与IMEX=1,HDR=YES选项一起使用

0

我有一个列,其中的值主要是文本:true或false。半路向下有两个空白值。当导入发生时,空白值被替换为空字符串。这可能是因为OLEDB将列的数据类型确定为布尔值,并且不导入任何非布尔值,如blank。

我在这个答案中试过这个解决方案,但没有起作用。即使当我预先创建DATABATE并将其列设置为所有都具有字符串的数据类型时,空白值仍会被删除。

我尝试过对同一问题中建议的注册表项进行黑客攻击,但没有效果。

有什么办法吗?还是我要尝试使用COM?我们没有电子表格设备的预算,而且我不能使用Excellibrary,因为我主要要处理.xlsx文件。

提前谢谢


我知道我迟到了三年,但这可能对某些人有所帮助。所有的功劳都归功于安德鲁·加里森,他把答案贴在了这里。您需要修改注册表设置:

1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\

在此键下,将TypeGuessRows改为0ImportMixedTypes改为Text

ace扫描前8行并尝试猜测列格式。其他所有与格式不匹配的内容都将返回空值。将typeguesRow设置为0将强制驱动程序扫描所有行以确定格式(当然会影响某些性能)。importmixedtypes=text指定具有混合格式的列(与您的情况一样)应作为文本导入。


尝试将Excel文件保存为csv格式并进行处理。