.net 读取 csv文件的问题~~~

问题描述

小弟想写个读取csv的代码,但碰到这么几个问题,希望大家帮帮忙1,如果用oledb读取的话,文件名含有空格或者-等特殊符号时,无法读取,但如果用split按,来拆分又遇到正文含有逗号会出错的情况2,oledb读数据会有丢失的情况,比如一列分别是ww11,aa,1,2,3,4这样的数据,读出来的话只会有int类型的,也就是说ww11和aa这2项会是空的,IMEX也设置等于1了还是不行,请问怎么办啊~~

解决方案

解决方案二:
csv文件最好有特定格式正文中如果会出现","好的话建议将正文用类似这样的"xxx","XXX"方式保存如果格式太复杂可以按固定长度去读取要搞个万能的读取方法出来不太现实
解决方案三:
OLeDB读应该没啥问题啊如果是标准的CSV,好像每个字段都是“”括起来的,你可以用“split字符串,然后去掉最前和最后的空还有中间的单单的,字符串(中间的空串不要去)
解决方案四:
引用2楼honkerhero的回复:

OLeDB读应该没啥问题啊如果是标准的CSV,好像每个字段都是“”括起来的,你可以用“split字符串,然后去掉最前和最后的空还有中间的单单的,字符串(中间的空串不要去)

好像oledb是不行哦,我试了很多次了,好像如果数字比字符串多,都按数字来读,字符串就会丢失字符串多的就按字符串读,数据都正常
解决方案五:
OleDb应该没问题吧。。我是这么做的using(OleDbConnectionconn=newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:UsersFUCDesktop;ExtendedProperties='Text;'")){DataTabledtTable=newDataTable();OleDbDataAdapteradapter=newOleDbDataAdapter("SELECT*FROM[Book1.csv]",conn);try{adapter.Fill(dtTable);}catch(Exceptionex){dtTable=newDataTable();}this.dataGridView1.DataSource=dtTable;}

csv是用excel以csv形式保存的,楼主也可以这样,方便测试111,""",""",ccc,333asdf,231,sdf31,"""asd34"",5"

解决方案六:
引用4楼geniusatm4的回复:

OleDb应该没问题吧。。我是这么做的C#codeusing(OleDbConnectionconn=newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:UsersFUCDesktop;ExtendedProperties='Text;'")){……

哥们,我和你的代码差不多的,没看明白你下面的那个数据,我是在excel里直接写的数据,存为csv文件的要不你试试看,第一列数据是ww11,aa,11,22,33,44六项,注意是列~~~前两项会丢失哦~
解决方案七:
问题解决没啊我也遇到了相同的问题
解决方案八:
楼主的例子里,前两项的逗号分隔符是全角的吧,改成半角的试试
解决方案九:
用oledb读取不跟逗号有关,那个逗号是csv自动生成的不会有全角的,如果用逗号来读取,split来拆分又会遇到正文含有无数个逗号和引号的问题
解决方案十:
逗号什么的,都能处理
解决方案十一:
ole读取excel或者csv的文件有问题的。根据我个人的经验来看,xls和csv中的数据,都分为显示和内容两部分,也就是说显示的数据就是你看到的数据,内容数据,就是后台的你看不到的数据。这样来说,对于每一个cell来说,都有text和vlaue1、value2等3个属性。如果你是一个cell一个cell的读取的话,你会发现,有一些cell,text有值,但是value没有,相反的情况也存在。但是如果你在文件中直接将值删除掉,手动打上去,那么text和value都有了。每一次读取excel的文件的,都让我觉得不是很放心,就是因为excel的显示和内容问题,他们并不一致!!所以后来,我取消了读取excel的操作,我每次都将excel的文件手动另存为了txt文件。然后读取的txt文件,这样绝对不会有数据丢失的问题。
解决方案十二:
补充一点,ole读取的是cell的value1属性的值。
解决方案十三:
ExcelJetcell.NET2.5.0

时间: 2024-10-31 16:20:05

.net 读取 csv文件的问题~~~的相关文章

php读取csv文件并输出的方法

 本文实例讲述了php读取csv文件并输出的方法.分享给大家供大家参考.具体实现方法如下: <?php $row = 0; $j = 1; // Linea por la que quieres empezar $file = "name.txt"; //Nombre del fichero if (($handle = fopen($file, "r")) !== FALSE) { while (($data = fgetcsv($handle, "

jsp读取CSV文件如何替换csv文件?

问题描述 jsp读取CSV文件如何替换csv文件? 我遇到一个问题,csv文件内容如下: car118499ActivePreActivecar2ActivePreActivecar321138Active40712PreActivecar4ActivePreActive 我想在jsp中显示 car1 car2 car3 car418499 21138 40712

php fgetcsv读取csv文件代码

php教程 fgetcsv读取csv文件代码 function get_csv_contents( $file_target ){ $handle  = fopen( $file_target, 'r'); while ($data = fgetcsv($handle, 1000, ",")) {             $num = count($data);         echo "<p> $num fields in line $row: <br&

php使用fgetcsv读取csv文件出现乱码的解决方法_php技巧

本文实例讲述了php使用fgetcsv读取csv文件出现乱码的解决方法.分享给大家供大家参考.具体分析如下: 一般来说在php中碰到乱码多半是编码问题,在这里我们实例分析了fgetcsv读取csv文件乱码原因所在与解决方法. 例子如下: 复制代码 代码如下: function get_csv_contents( $file_target ){  $handle  = fopen( $file_target, 'r');  while ($data = fgetcsv($handle, 1000,

csv-java中读取CSV文件时怎么处理数据当中的逗号?

问题描述 java中读取CSV文件时怎么处理数据当中的逗号? 现在要读取一个CSV文件,将内容读取后用excel的格式输出, 读取的时候使用StringTokenizer类,用逗号将CSV的数据用逗号一个个分割, csv的格式是这样的(值与值之间用半角逗号分隔): "aaa","bbb","ccc","ddd","eee"; 像这样的情况是没有问题的: 但是当数据中也有半角逗号时,例如: "aaa

c++读取csv文件并赋值-vc++中,怎么读取csv文件?

问题描述 vc++中,怎么读取csv文件? 如题,csv文件里的内容如下: 1,2 3,4 5,6 7,8 ... 我想知道,怎么可以读取这个csv文件,然后将这两竖排数分别存到两个数组中 还有,还要根据这个csv文件里的数据的个数,来定义数组的大小 解决方案 一个VC++读取csv文件的函数VC++中对文件的写入和读取VC++中对文件的写入和读取 解决方案二: 可以用ifstream读取,然后用sscanf格式化提取 分别存到两个数组可以借助vector来实现 #include <iostre

php读取csv文件并输出的方法_php技巧

本文实例讲述了php读取csv文件并输出的方法.分享给大家供大家参考.具体实现方法如下: <?php $row = 0; $j = 1; // Linea por la que quieres empezar $file = "name.txt"; //Nombre del fichero if (($handle = fopen($file, "r")) !== FALSE) { while (($data = fgetcsv($handle, "

基于PHP读取csv文件内容的详解_php技巧

一次性读取csv文件内所有行的数据 复制代码 代码如下: <?php $file = fopen('windows_2011_s.csv','r'); while ($data = fgetcsv($file)) { //每次读取CSV里面的一行内容//print_r($data); //此为一个数组,要获得每一个数据,访问数组下标即可$goods_list[] = $data; }//print_r($goods_list);/* foreach ($goods_list as $arr){ 

c++读取csv文件并赋值-如何通过c ++读取一个csv文件并将数据赋值给两个一位数组?

问题描述 如何通过c ++读取一个csv文件并将数据赋值给两个一位数组? 0 912.43 1.24 912.42 1.54 901.92 21.94 883.97 24.17 881.51 29.94 876.45 37.4 870.57 49.62 861.14 59.06 853.05 75.99 843.75 90.84 833.95 118.8 818.25 135.2 804.9 152.35 791.55 157.68 791.15 174.6 770.35 190.92 766.

d3.js 读取csv文件,csv文件长度为4万多条,用下面的方法读取,出现脚本运行时间过长

问题描述 d3.js 读取csv文件,csv文件长度为4万多条,用下面的方法读取,出现脚本运行时间过长 试过将csvdata.length改成数字,例如25,则可以正常显示.csvdata.length为45284. var csvdata = new Array(); d3.csv("daaa02_bus_station.csv",function(csvdata){ for (var i = 0; i < csvdata.length; i ++) { //var point