在使用OleDB读取完CSV文件生成的DataSet中,有一些列的内容被改变。有列A,在CSV中该列的值有:F5;F7;aaa;bbb;等等。
但在生成的DataSet中,这些值就变成:5;7;null;null;等等。(含有数字的字符串被转成数值,纯字符组成的字符串被转成null)
我在调试的过程中发现,这一列的object类型为decimal。 而且其他列没有问题。
最后,找到一个解决办法,就是把单元格格式设置为"Text",默认为"Number"。 想请教一下:
1、为什么CSV用Excel打开后,单元格格式默认会是"Number"。这和文件本身的或者打开时候选择的编码方式是否有关系?
2、为什么所有单元格都是"Number"类型,而只有这一列会转为decimal格式,是因为"F5"这类的值有什么特定含义会被转译吗?(我在测试过程中,把该列的内容"F5";"F7"改为"M5";"M7"后,生成的DataSet正常。)希望遇到过这类问题的朋友们分享一下解决方案。有兴趣的朋友们也可以试试。谢谢……。
但在生成的DataSet中,这些值就变成:5;7;null;null;等等。(含有数字的字符串被转成数值,纯字符组成的字符串被转成null)
我在调试的过程中发现,这一列的object类型为decimal。 而且其他列没有问题。
最后,找到一个解决办法,就是把单元格格式设置为"Text",默认为"Number"。 想请教一下:
1、为什么CSV用Excel打开后,单元格格式默认会是"Number"。这和文件本身的或者打开时候选择的编码方式是否有关系?
2、为什么所有单元格都是"Number"类型,而只有这一列会转为decimal格式,是因为"F5"这类的值有什么特定含义会被转译吗?(我在测试过程中,把该列的内容"F5";"F7"改为"M5";"M7"后,生成的DataSet正常。)希望遇到过这类问题的朋友们分享一下解决方案。有兴趣的朋友们也可以试试。谢谢……。
此贴注定要沉?
Oh No.................
可以试一下Excel导出csv文件。它根本不加双引号。csv规定只有内部含有特殊的字符(例如逗号)的时候才必须加双引号,否则就没有必要加。
你可以在第一行后面插一个文本类型的数据强制使其判断为文本。或者用csv的Schema.ini文件控制
[AP6806.csv]
ColNameHeader=True
CharacterSet=936
Format=CSVDelimited
Col1=违法时间 Date
Col2=凭证编号 Char Width 255
Col3=违法地点 Char Width 255
Col4=采集机关 Char Width 255
Col5=违法内容 Char Width 255
Col6=违反条款 Char Width 255