Values changing when importing from Excel with C#/OLEDB
我正在尝试使用OLEDB将Excel电子表格中的一些数据导入到我的C应用程序中。我将标准连接字符串与
我有一个列,其中的值主要是文本:true或false。半路向下有两个空白值。当导入发生时,空白值被替换为空字符串。这可能是因为OLEDB将列的数据类型确定为布尔值,并且不导入任何非布尔值,如blank。
我在这个答案中试过这个解决方案,但没有起作用。即使当我预先创建DATABATE并将其列设置为所有都具有字符串的数据类型时,空白值仍会被删除。
我尝试过对同一问题中建议的注册表项进行黑客攻击,但没有效果。
有什么办法吗?还是我要尝试使用COM?我们没有电子表格设备的预算,而且我不能使用Excellibrary,因为我主要要处理.xlsx文件。
提前谢谢
我知道我迟到了三年,但这可能对某些人有所帮助。所有的功劳都归功于安德鲁·加里森,他把答案贴在了这里。您需要修改注册表设置:
1 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\ |
在此键下,将
ace扫描前8行并尝试猜测列格式。其他所有与格式不匹配的内容都将返回空值。将typeguesRow设置为0将强制驱动程序扫描所有行以确定格式(当然会影响某些性能)。importmixedtypes=text指定具有混合格式的列(与您的情况一样)应作为文本导入。
尝试将Excel文件保存为csv格式并进行处理。