C# 读写CSV文件(导入导出)
CSV(逗号分隔值)文件是一种特殊的文件类型,可在Excel 中创建或编辑。 CSV 文件不是采用多列的形式存储信息,而是使用逗号分隔的形式存储信息。 将文本和数字保存在CSV 文件中时,可轻松将它们从一个程序移动至另一个程序。
public
class
CSVHelper
{
/// <summary>
/// 写入CSV
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="dt">要写入的datatable</param>
public
static
void
WriteCSV(
string
fileName, DataTable dt)
{
FileStream fs;
StreamWriter sw;
string
data =
null
;
//判断文件是否存在,存在就不再次写入列名
if
(!File.Exists(fileName))
{
fs =
new
FileStream(fileName, FileMode.Create, FileAccess.Write);
sw =
new
StreamWriter(fs, Encoding.UTF8);
//写出列名称
for
(
int
i = 0; i < dt.Columns.Count; i++)
{
data += dt.Columns[i].ColumnName.ToString();
if
(i < dt.Columns.Count - 1)
{
data +=
","
;
//中间用,隔开
}
}
sw.WriteLine(data);
}
else
{
fs =
new
FileStream(fileName, FileMode.Append, FileAccess.Write);
sw =
new
StreamWriter(fs, Encoding.UTF8);
}
//写出各行数据
for
(
int
i = 0; i < dt.Rows.Count; i++)
{
data =
null
;
for
(
int
j = 0; j < dt.Columns.Count; j++)
{
data += dt.Rows[i][j].ToString();
if
(j < dt.Columns.Count - 1)
{
data +=
","
;
//中间用,隔开
}
}
sw.WriteLine(data);
}
sw.Close();
fs.Close();
}
/// <summary>
/// 读取CSV文件
/// </summary>
/// <param name="fileName">文件路径</param>
public
static
DataTable ReadCSV(
string
fileName)
{
DataTable dt =
new
DataTable();
FileStream fs =
new
FileStream(fileName, FileMode.Open, FileAccess.Read);
StreamReader sr =
new
StreamReader(fs, Encoding.UTF8);
//记录每次读取的一行记录
string
strLine =
null
;
//记录每行记录中的各字段内容
string
[] arrayLine =
null
;
//判断,若是第一次,建立表头
bool
isFirst =
true
;
//列的个数
int
dtColumns = 0;
//逐行读取CSV文件
while
((strLine = sr.ReadLine()) !=
null
)
{
strLine = strLine.Trim();
//去除头尾空格
arrayLine = strLine.Split(
','
);
//分隔字符串,返回数组
if
(isFirst)
//建立表头
{
dtColumns = arrayLine.Length;
//列的个数
for
(
int
i = 0; i < dtColumns; i++)
{
dt.Columns.Add(arrayLine[i]);
//每一列名称
}
isFirst =
false
;
}
else
//表内容
{
DataRow dataRow = dt.NewRow();
//新建一行
for
(
int
j = 0; j < dtColumns; j++)
{
if
(arrayLine.Length > j)
{
dataRow[j] = arrayLine[j];
}
}
dt.Rows.Add(dataRow);
//添加一行
}
}
sr.Close();
fs.Close();
return
dt;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)