使用Jet的OleDbDataAdapter数据types不匹配

我正在使用OleDbDataAdapter (Microsoft.ACE.OLEDB.12.0准确)从Excel工作簿检索数据。 对于一个表,我使用的是一个types化的数据集,但是对于另一个表,我不能这样做,因为列数是未知的(Excel模板可能会生成额外的列)。

问题是,如果某人在列中input了太多的数字值,“JET”似乎认为它是一个数字列,并且文本值不再被加载。 我知道你可以改变模板,并为该列设置特定的数据types,但模板已经广泛传播,所以我宁愿在导入时解决它。

现在我所尝试的是首先计算已使用列的数量,并使用已定义的Columns集合准备新的DataTable,并将它们的DataType属性设置为typeof(string) 。 可惜JET似乎并没有看这个,而是依然select了自己的方式。 我猜即使我可以在这里使用一个强types的数据集,它也不会帮助…

有谁知道如何告诉JET如何导入数据,所以我不必面对提供新的模板版本的负担?

* * :不要附带Excel自动化解决scheme…

如果您有权访问registry集TypeGuessRows = 0和/或ImportMixedTypes = Text。 请参阅这里了解更多信息初始化设置