C#读写csv

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Data;
using System.Text.RegularExpressions;

public class CSVUtil
{
public CSVUtil()
{
}
//write a new file, existed file will be overwritten
public static void WriteCSV(string filePathName,List<String[]>ls)
{
WriteCSV(filePathName,false,ls);
}
//write a file, existed file will be overwritten if append = false
public static void WriteCSV(string filePathName,bool append, List<String[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(String[] strArr in ls)
{
fileWriter.WriteLine(String.Join(",",strArr));
}
fileWriter.Flush();
fileWriter.Close();

}
public static List<String[]> ReadCSV(string filePathName)
{
try
{
List<String[]> ls = new List<String[]>();
StreamReader fileReader = new StreamReader(filePathName);
if (fileReader == null)
{
throw new Exception("The file is not exit!");
}
string strLine = "";
string str = ",(?=\")|(?<=\"),";
Regex r = new Regex(str);
//string[] strSplit = {",\"","\","};
strLine = fileReader.ReadLine(); //first line:header, do not need
if (strLine == null)
{
throw new Exception("The file is null!");
}
while (strLine != null)
{
if (strLine.Contains("\""))
{
if (strLine != null && strLine.Length > 0)
{
if (r.IsMatch(strLine))
{
string[] temp = { };
temp = r.Split(strLine);
List<string> list = new List<string>();
//temp = strLine.Split(strSplit, StringSplitOptions.None);
for (int i = 0; i < temp.Length; i++)
{
if (temp[i].StartsWith("\"") && temp[i].EndsWith("\""))
{
temp[i] = temp[i].Substring(1, temp[i].Length - 2);
list.Add(temp[i]);
}
else
{
string[] ttemp = temp[i].Split(',');
for (int j = 0; j < ttemp.Length; j++)
list.Add(ttemp[j]);
}
}
ls.Add(list.ToArray());
}
else
ls.Add(strLine.Split(','));
}

}
else
{
if (strLine != null && strLine.Length > 0)
{
ls.Add(strLine.Split(','));
}
}
strLine = fileReader.ReadLine();
}
fileReader.Close();
return ls;
}
catch(Exception ex)
{
return null;
}
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值