GVKun编程网logo

用C#解析带头的CSV文件(c# 解析csv文件)

21

如果您对用C#解析带头的CSV文件感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于用C#解析带头的CSV文件的详细内容,我们还将为您解答c#解析csv文件的相关问题,并且为您

如果您对用C#解析带头的CSV文件感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于用C#解析带头的CSV文件的详细内容,我们还将为您解答c# 解析csv文件的相关问题,并且为您提供关于(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常、c# – 如何使用FileHelpers编写带头的CSV文件?、C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建的有价值信息。

本文目录一览:

用C#解析带头的CSV文件(c# 解析csv文件)

用C#解析带头的CSV文件(c# 解析csv文件)

是否有默认/官方/推荐的方法来解析C#中的CSV文件?我不想滚动自己的解析器。

另外,我已经看到有人使用ODBC / OLE DB通过文本驱动程序读取CSV的实例,由于它的“缺点”,很多人不赞成这样做。这些缺点是什么?

理想情况下,我正在寻找一种方法,可以使用第一条记录作为标题/字段名称来按列名读取CSV。给出的一些答案是正确的,但是可以基本上将文件反序列化为类。

答案1

小编典典

让图书馆为您处理所有细节!:-)

检出FileHelpers并保持干燥-不要重复自己-
无需花费万亿次来重新发明轮子…。

基本上,您只需要通过公共类(以及经过深思熟虑的属性(例如默认值,NULL值的替换等))定义数据的形状-CSV中单独行中的字段-
在FileHelpers引擎上找到一个文件,然后进行宾果游戏-您从该文件中获取所有条目。一个简单的操作-出色的性能!

(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常

(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常

http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx 很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。 例如: $csvDate = 中文,日文,韩文,西班牙'',''文,阿拉

http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx

很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。

例如:
$csvDate = "中文,日文,韩文,西班牙'',''文,阿拉伯文";
$srcDir = ''/workspace/CSVList'';
$srcFile = $srcDir.date("Ymd").".csv";
if(!is_dir($srcDir)){
    $fh = fopen($srcFile,''wb'');
    fwrite($fh,$csvDate);
    fclose($fh);
}

我们想要得CSV文件是这样的格式

中文 日文 韩文 西班牙'',''文 阿拉伯文  

但是由于,西班牙文中有单引号和逗号
实际上在Excel中是这样的
中文 日文 韩文 西班牙'' 阿拉伯文

解决方法一般来说就是使用转义符来进行赋值,不过如果遇到海量数据的情况下,这样的办法是不可取的。
下面推荐使用array_push和fputcsv相结合的方法来解决该问题。

这里通过程序来说明:

(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常$srcDir = ''/workspace/UnLockList/'';
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
!is_dir($srcDir) ) && (mkdir($srcDir, 0777&& chmod($srcDir,0777)) ;
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$srcFile = $srcDir . date("Ymd". ''.csv'';
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$rs0 = GetCSVData($PRDBConn);  //UnLockTN_Request返回的是二维数组
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$fh = fopen($srcFile, ''wb'');
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
if(count($rs0)){
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        fputcsv(
$fh,split('','',"申請ID,機種名,EB-№,申請№,部品名,LockUser"));
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        
foreach($rs0 as $line0 ){
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常                fputcsv(
$fh,$line0);
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        }
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常}
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常fputcsv(
$fh,array());
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
fclose($fh);
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
chmod($srcFile,0666);

 function GetCSVData ($PRDBConn){

      $RETURN_ARRAY = array();
      //数据库连接
   .....
   .....

  $RS01 = 记录集;
      foreach ($RS01 AS $ROW01){
      $line = array();
         array_push($line,$ROW01["ID"]);
         array_push($line,$ROW01["NAME"]);
         array_push($line,$ROW01["NO"]);
         .......
         array_push($RETURN_ARRAY,$line);
       }

         return $RETURN_ARRAY; 
   }
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常

立即学习“PHP免费学习笔记(深入)”;


如上程序所示,就可以解决大量数据输出成CSV文件中,出现特殊意义字符,导致输出CSV文件格式异常的问题了。

 

 

c# – 如何使用FileHelpers编写带头的CSV文件?

c# – 如何使用FileHelpers编写带头的CSV文件?

我正在使用FileHelpers将DataTable内容写入CSV文件.

由于DataTable中有大量记录,我选择将结果集转储到CSV文件中,如下所示

CommonEngine.DataTabletoCSV(dt,filename)

CSV已成功写入200万条大小为150MB的记录.

但我想在此CSV文件的第一行添加归档标题.

FileHelper是否允许使用CommonEngine.DataTabletoCSV写入标头?

解决方法

在调用WriteFile之前,必须使用engine.HeaderText = engine.GetFileHeader()

C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件

C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件

/// <summary>
        /// 写入数据到CSV文件,覆盖形式
        /// </summary>
        /// <param name="csvPath">要写入的字符串表示的CSV文件</param>
        /// <param name="LineDataList">要写入CSV文件的数据,以string[]类型List表示的行集数据</param>
        public static   void OpCsv(string csvPath, List<string[]> LineDataList)
        {
            using (FileStream fs = new FileStream(csvPath.Trim(), FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))
                {
                    StringBuilder sb_csvStr = new StringBuilder();
                    for (int i = 0; i < LineDataList.Count; i++)//<--row
                    {
                        sb_csvStr.Clear();
                        for (int j = 0; j < LineDataList[i].Length; j++)//<--col
                        {
                            sb_csvStr.Append(string.Format("{0},", LineDataList[i][j].ToString()));
                        }
                        sw.WriteLine(sb_csvStr.ToString().Substring(0, sb_csvStr.ToString().Length - 1));
                    }
                    fs.Flush();
                }
            }
        }

 

/// <summary>
        /// 读取csv文件
        /// </summary>
        /// <param name="csvPath">string 标识的 csv文件路径</param>
        /// <returns>返回的读取的 csv 文件的行集合</returns>
        public static string[] ReadCsv(string csvPath)
        {
            string[] csvLineList = File.ReadAllLines(csvPath, Encoding.Default);
            return csvLineList;
        }    

 

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

一.csv文件的创建

(1)新建一个文本文档:

打开新建文本文档,进行编辑。

注意:关键字与关键字之间用英文半角逗号隔开。第一行为引用字段,第二行为对应值。例如:

(2)生成csv文件

将文本文档重命名更改文件扩展名,将“.txt”改为“.csv”

重命名重新打开后就是一个CSV文件格式。例如:

二.数据的表示和读写

csv文件的每一行都是一维数据,可以使用python中的列表类型表示,整个csv文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。

注:打开CSV文件的路径可以是绝对路径也可以是相对路径,可根据个人习惯来编写。

(1)导入csv格式数据到列表:

1 fo=open("city.csv","r")#打开命名为city的CSV文件
2 ls=[] #定义一个空列表,将CSV中读取的文件放进列表
3 for line in fo:
4     line=line.replace("\n","")
5     ls.append(line.split(","))
6 print(ls)
7 fo.close()#关闭文件

运行结果:

[[''城市'', ''环比'', ''同比'', ''定基''], [''北京'', ''101.5'', ''120.7'', ''121.4''], [''上海'', ''101.2'', ''127.3'', ''127.8''], [''广州'', ''101.3'', ''119.4'', ''120.0''], [''深圳'', ''102.0'', ''140.9'', ''145.5''], [''沈阳'', ''100.1'', ''101.4'', ''101.6''], ['''', '''', '''', '''']]

(2)逐行处理CSV格式数据:

 1 fo=open("city.csv","r")#打开命名为city的CSV文件
 2 ls=[]#定义一个空列表,将CSV中读取的文件放进列表
 3 for line in fo:
 4     line=line.replace("\n","")
 5     ls=line.split(",")
 6     lns=""
 7     for s in ls:
 8         lns+="{}\t".format(s)
 9     print(lns)
10 fo.close()

运行结果:

城市    环比    同比    定基    
北京    101.5    120.7    121.4    
上海    101.2    127.3    127.8    
广州    101.3    119.4    120.0    
深圳    102.0    140.9    145.5    
沈阳    100.1    101.4    101.6

(3)将一维数据写入CSV文件:

1 fo=open("city.csv","w")
2 ls=[''湖北'',''101.2'',''120.7'',''121.4'']
3 fo.write(",".join(ls)+"\n")
4 fo.close()

运行结果;

city.csv文件原有数据:

运行之后的数据:

(4)将二维数据写入CSV文件:

 1 fr=open("city1.csv","r")
 2 fw=open("city1out.csv","w")
 3 ls=[]
 4 for line in fr:#将CSV文件当中的二维数据读到列表当中去
 5     line=line.replace("\n","")
 6     ls.append(line.split(","))
 7 for i in range(len(ls)):#遍历列表变量计算百分数
 8     for j in range(len(ls[i])):
 9         if ls[i][j].replace(".","").isnumeric():
10             ls[i][j]="{:.2}%".format(float(ls[i][j])/100)
11 for row in ls:#将列表变量中的两位数据写入CSV文件当中去
12     print(row)
13     fw.write(",".join(row)+"\n")
14 fr.close()
15 fw.close()

运行结果:

city1文件数据与前两个例子的city文件的内容相同,city1out.csv文件为新建立的一个CSV文件。

 city1out.csv文件数据:

 

今天关于用C#解析带头的CSV文件c# 解析csv文件的讲解已经结束,谢谢您的阅读,如果想了解更多关于(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常、c# – 如何使用FileHelpers编写带头的CSV文件?、C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建的相关知识,请在本站搜索。

本文标签: