[.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
运行程序,得到预期的结果: