C#导入导出.CSV文件

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#导入导出.CSV文件相关的知识,希望对你有一定的参考价值。

欢迎您成为我的读者,希望这篇文章能给你一些帮助。

前言

大家好,我是阿辉。

今天和大家一起来看看,C#在处理流文件时,我们最常用的导出Excel文件是如何操作的。

在日常的业务编码过程中,很多时候需求就要求导出Office能打开的表格文件。我们一般的做法是使用Office组件的帮助,或者更优秀一点的是使用NPOI组件来导出(摆脱其Office组件的限制)。但是这两种导出组件都有或多或少的弊端。

比如NPOI软件,当数据量过大超过60W的时候,在组件内部会出现溢出问题。目前还无解,只能换一个别的组件或者对导出的数据进行限制。

那么我们有没有别的办法能导出Office能打开的文件呢,此时我们的流文件.csv格式就上场了。

.csv是一种逗号分隔值文件格式,其文件以纯文本形式存储表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。

它有很多好处,可存储大量数据,耗时少,易操作,可被Office可打开等。

对于目前很多和下位机硬件进行数据交互,在上位机转存的数据一般情况都会是csv文件。

csv格式展示形式

C#导出CSV文件

try

   string strBufferLine = "";
   StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, Encoding.UTF8);                
  strmWriterObj.WriteLine(tableheader);                
  for (int i = 0; i < dt.Rows.Count; i++)
  
      strBufferLine = "";
      for (int j = 0; j < dt.Columns.Count; j++)
      
          if (j > 0)
              strBufferLine += ",";
          strBufferLine += dt.Rows[i][j].ToString();
      
      strmWriterObj.WriteLine(strBufferLine);
  
  strmWriterObj.Close();
  strmWriterObj.Dispose();
  return dt.Rows.Count;
 
 catch (Exception ex)
 
     throw new Exception(ex.Message);
 

C#导入CSV文件

public static DataTable Csv2Dt(string filePath, int n, DataTable dt)
 
     try
     
         var encoding = CommonFileHelper.GetFileEncodeType(filePath);
         StreamReader reader = new StreamReader(filePath, encoding, false);
         int i = 0, m = 0;
         reader.Peek();
         DataRow dr;
         while (reader.Peek() > 0)
                                                 
             m = m + 1;                    
             string str = reader.ReadLine();
             if (m >= n + 1)
             
                 string[] split = str.Split(',');
                 dr = dt.NewRow();
                 for (i = 0; i < split.Length; i++)
                 
                     if (i == 0)
                     
                         dr[i] = split[i];
                                                
                     else
                     
                         if (string.IsNullOrEmpty(split[i]))
                                                             
                             dr[i] = DBNull.Value;
                         
                         else
                         
                             dr[i] = Convert.ToDouble(split[i]);
                         
                     
                 
                 dt.Rows.Add(dr);
             
         
         reader.Close();
         reader.Dispose();
         return dt;
     
     catch (Exception ex)
                         
         throw new Exception(ex.Message);
                 
 

很高兴您能看到这里,希望对你有帮助。

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发  谢谢。

很高兴能和您成为朋友。



推荐阅读

分享给同做程序员的你我他

毕业四年,我当初是如何走上编程这条路的!

物联网工程专业的迷茫与抉择

以上是关于C#导入导出.CSV文件的主要内容,如果未能解决你的问题,请参考以下文章

C#导入csv文件,数据中有逗号怎么处理

将表从数据库导出到 csv 文件

PHP如何导出导入CSV文件?

c#怎么将datatable导出到csv文件中

php 导入/导出 csv 文件

MongoDB csv文件导入导出