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文件的主要内容,如果未能解决你的问题,请参考以下文章