rof*_*s91 8 c# oledb registry excel registrykey
我正在尝试使用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;'");
Run Code Online (Sandbox Code Playgroud)
研究告诉我,Extended Properties连接字符串中的完整应该是
Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text
但是,我被告知在连接字符串中,TypeGuessRows=0 没有任何意义,因为该值将直接从注册表中获取.因此,我需要手动修改密钥并从连接字符串中删除此属性.
涉及的特定注册表项是:
路径:
HKEY_LOCAL_MACHINE\SOFTWARE \微软\喷气\ 4.0 \发动机\ EXCEL
键:
TypeGuessRows
原始值= 8,为了使其工作变为= 0
如果不这样做的IMEX将无法正常工作,甚至强硬.我添加TypeGuessRows=0进了Extended Properties.
但是,我的公司禁止修改注册表值(严格地说).我被告知找到替代方案.
简而言之:
有没有办法读取混合数据类型excel文件,而无需修改任何注册表项(这是一种非常常见的做法)?
更多主题:
你以前经历过这个吗?是否有可能我们可以TypeGuessRows=0从连接字符串设置而无需修改注册表项(取消我的上述前提).
如果事情不能解决OleDb:
旁边还有替代品OleDb吗?
我感谢任何建议或建议.
问候
你可以做的是要求在Excel的第一行中有标题并设置连接字符串
var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;HDR=No;IMEX=1;'");
Run Code Online (Sandbox Code Playgroud)
这里的关键是设置HDR = No(NO HEADER),但是因为你现在有了标题,所以每个列都会被视为字符串(文本),你可以对每个单元格值进行解析或验证.当然,您需要跳过或删除第一行,因为它包含标题信息.
| 归档时间: |
|
| 查看次数: |
11373 次 |
| 最近记录: |