C# 读取EXCEL混合列中文本单元格为空的解决办法
c#读取excel时会遇到这样的问题:某一列第一行是数值,第二行或者某些行是文本,那么读取到这些文本单元格为空值,想要解决这个问题,有三种办法。
方法一
把连接字符串改为: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'重点是 IMEX=1这句。不过,这样的话,EXCEL 默认读取前8行,如果前8行都没有出现文本,那么就认为这一列的所有值都是数字,这时我们还需要修改注册表,在HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Excel有一个TypeGuessRows值,预设是8,只要把TypeGuessRows机码值改成0,就可以解这个问题了!
方法二
修改Excel表,把混合列第一行改为文本,当然要记得在程序里面处理第一行的内容。
方法三
如果是读取固定Excel模板内容,个人建议使用这个方法,打开Excel表,选中有问题的混合列,一次点击【数据】-数据工具中的【分列】,打开文本分列向导窗体,默认分隔符号点击下一步,默认Tab键点击下一步,重点来了,把列数据格式选择文本,点击完成,这样数值单元格左上角会出现一个小的绿色三角表,这样处理之后就可以正常读取该列的值了,我做一些c/s桌面小程序的时候会用这个方法,不用修改注册表。
爱开发,爱分享,我是丫丫,我是菜鸟程序员,请多指教喽!(*^__^*) 嘻嘻……

浙公网安备 33010602011771号