我正在尝试使用C#读取包含混合数据类型的Excel文件。以下是我的连接字符串:
var path = //xls location
var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;IMEX=1;'");
研究表明,连接字符串中完整的“扩展属性”应为:
Excel 8.0; IMEX=1; HDR=NO; TypeGuessRows=0; ImportMixedTypes=Text
然而,我被告知在连接字符串中,“TypeGuessRows=0”没有任何意义,因为该值将直接从Registry中获取。因此,我需要手动修改键并从连接字符串中删除此属性。
涉及到的特定注册表键是:
路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
密钥:
TypeGuessRows
原始值 = 8,为使其起作用,改为 = 0
如果不这样做,“IMEX”将无法工作,即使我在“扩展属性”中添加了“TypeGuessRows=0”。
然而,我的公司禁止修改注册表值(严格要求)。我被告知要找到其他替代方法。
简而言之:有没有一种方式可以读取杂项数据类型的Excel文件,而不必修改任何注册表键(这是相当普遍的做法)?
进一步讨论:
你有没有遇到过这种情况?我们可以通过连接字符串仅设置"TypeGuessRows=0"而不必修改注册表键吗?
如果使用“OleDb”无法解决问题:
除了“OleDb”之外,还有哪些替代方法?
非常感谢您的建议和建议。
问候