文档详情

d3.js,csv表格文件的读取与显示.doc

发布:2017-07-10约字共26页下载文档
文本预览下载声明
d3.js,csv表格文件的读取与显示 篇一:准确读取CSV文件 C#准确读取CSV格式数据 众所周知,VS框架下的程序读取表格文件可以用OLEDB像数据库一样select检索,但是对于某些符合CSV标准,而不符合表格标准的文件,用select方法会报错。毕竟它们的格式是不一样的,于是这种情况下通常采用读文本的方法来读取CSV数据,它本身就是纯文本文件。 如果文件数据的列是纯粹的数字,然后用单一符号分割(通常是逗号),那 么读取一行,直接用split()函数分割即可。但对于列包含字符串,字符串包含逗号,字符串内还可能包含引号,这样的情况,split()就无能为力了。我们先来看一下对于这种情况,可用如下代码解决: //调用示例: Listlt;string ls=GetCsvLineData(@1999,Chevy,Venture Extended Edition,,4900.00);//分割单行成列 public Listlt;string GetCsvLineData(string line) { Listlt;string ls = new Listlt;string(); bool start = false; //标记是否在块中 bool headFlag = false;//引号开头 int i=0;//指针 string part = ;//分块 while (i lt; line.Length) { string s = line.Substring(i, 1); string spre = (i 0) ? line.Substring(i - 1, 1) : ,;//前一位 string snext = (i lt; line.Length - 1) ? line.Substring(i + 1, 1) : ,; //后一位 string snext2 = (i lt; line.Length - 2) ? line.Substring(i + 2, 1) : ; //后二位 if(!start)//块外 { start = true; headFlag = false; if(s==,)//空块 { ls.Add(); start = false; } else if(s==@) { if (snext == @) { if (snext2 == @)//开头三引号 { i += 2; ls.Add(s); headFlag = true; } else if (snext2 == ,)//空字符串 { i += 2; ls.Add(); start = false; } } else { headFlag = true; } } else { part += s; } } else { if(s==@)//块内引号 { if (snext == @ amp;amp; snext2 == ,)//引号 { part += s; ls.Add(part); i += 2; start = false; } else if (snext == @ amp;amp; snext2 == @)//三引号 { part += s; i++; } else if (snext == ,) { if(headFlag==true) { ls.Add(part);part = ; start = false; i++; } } } else if(s==,) { if (headFlag) part += s; else { ls.Add(part); part = ; start = false; } } else { part += s; } } i++; } if (part != ) ls.Add(part); return ls; } CSV标准是如何规定的: 1、 以半角逗号(即,)作分隔符,列为空也要表达其存在。 2、 列内容如存在半角逗号(即,)则用半角双引号(即)将该字段值包含 起来。 3、 列内容如存在半角引号(即)则应替换成半角双引号()转义,并用 半角引号(即)将该字段值包含起来。 我们来看如下源数据: 写成CSV文件为: 1997,Ford,E350,ac, abs, moon,3000.00 1999,Chevy,Venture Extended Edition,,4900.00 1999,Chevy,Venture Extended Edition, Very Large,,5000.0
显示全部
相似文档