前言:在读写CSV文件时一般都会推荐CVSHelper插件,但是这个开源插件不是MIT协议而是有其他的两套协议,出于公司考虑决定使用其他的,但又不满足我的项目需求,所以手撸一份代码
不知道写啥再水一篇
/// <summary>
/// 读取CSV文件
/// </summary>
/// <param name="sr"></param>
public static DataTable ReadCSV(StreamReader sr)
{
DataTable dt = new DataTable();
string strLine = null;
string[] arrayLine = null;
string[] separators = { "," };
bool isFirst = true;
while ((strLine = sr.ReadLine()) != null)
{
strLine = strLine.Trim();
arrayLine = strLine.Split(separators, StringSplitOptions.RemoveEmptyEntries);
int dtColumns = arrayLine.Length;
if (isFirst)
{
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++)
{
dataRow[j] = arrayLine[j];
}
dt.Rows.Add(dataRow);
}
}
sr.Close();
return dt;
}
读取完后的使用方法
var csv = CSVHelper.ReadCSV(new StreamReader( reader));
foreach (DataRow item in csv.Rows)
{
var name= item["名称"].ToString();
}
var name 获取到的就是咱们第一行的表头为“名称”的值