[.NET] - OleDb读取CSV文件:使用指定的分隔符号

今天在用OleDb方式读取一个CSV文件的时候,发现得到的文本不是通常用逗号隔开的。而是用Tab制表符来隔开的。

 

OrderID    OrderName
1    1
2    2
3    3

然后去MSND查询了了下发现有针对Tab制表符的指定参数:

TabDelimited    文件被当做制表符分隔的文件

然后尝试了下降FMT设置为TabDelimited,但是结果却发现并不能得到分隔的结果。貌似被微软的文档坑了还是自己的了理解可能有偏差。看到FMT还有其他的参数,然后就逐一尝试了:

FMT=1 ==>失败

FMT=Delimited("+"  "+") ==>失败

然后看到网上有说可以改注册表,因为默认值逗号就是设置在注册表里的,这是路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\Format

但是没找到。。。由于系统是win8可能位置不一样坑爹。。。google也上不了。。。于是改注册表的方式没有得到尝试。而且改注册表也不是推荐的。

在网上serach了半天,终于找到了一个对我来说比较神奇的solution,利用Schema.ini文件。

在CSV文件所在的目录创建一个这样的文件,然后写一下内容:

[Order.csv]
Format=TabDelimited
ColNameHeader=True
MaxScanRows=0
Col1=OrderID Text Width 10
Col2=OrderName Text Width 30

运行程序,得到预期的结果:

posted @ 2014-09-27 20:02  码农小包  阅读(1825)  评论(1编辑  收藏  举报