【问题标题】:Mixed Data Type in Excel, IMEX Doesn't WorkExcel 中的混合数据类型,IMEX 不起作用
【发布时间】:2012-03-29 02:21:36
【问题描述】:

我正在尝试将 xls 导出到数据表中。下面是我的连接字符串。

string path = //xls source path
OleDbConnection MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel8.0;IMEX=1;TypeGuessRows=0;HDR=No;ImportMixedTypes=Text'");

我设置了IMEX=1 和所有其他扩展属性,因为我必须处理混合数据类型。

即使我这样设置连接,我仍然产生错误。

没有错误消息,但不一致的行(不遵循多数数据类型的行被设置为 null)。

谁能告诉我我错过了什么?顺便说一句,我正在使用OleDbDataAdapter & Fill(DataSet) 方法。

【问题讨论】:

    标签: c# datatable oledb xls


    【解决方案1】:

    您确定 TypeGuessRows=0;ImportMixedTypes=Text; 正在使用连接字符串并且不应在注册表中修改 (HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\Jet\4.0\Engines\Excel)? AFAIK 此设置是从注册表中读取的。 ImportMixedTypes=Text 通常是默认值,但 TypeGuessRows=8 应设置为 0,就像在您的连接字符串中一样。

    【讨论】:

    • 很好的答案...谢谢...知道这样的事情是怎么发生的吗?
    • 你说的“这种东西”是什么意思?
    • 我的意思是为什么即使我在连接字符串中明确设置TypeGuessRows=0,我仍然需要手动编辑注册表?
    • 那是因为它在那里没有意义,所以它被忽略了。有意义的属性是Excel8.0;IMEX=1;HDR=No;TypeGuessRowsImportMixedTypes 总是从注册表中获取它们的值。因此,这种行为是设计使然。
    • 在每台不同的机器上 - 是的。该值由 Jet Engine 在运行时读取,与程序编译无关。但是,您可以从程序中保存、更改然后恢复注册表中的值(如果有足够的权限)。
    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 2011-03-15
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多