`
jianglei244
  • 浏览: 18942 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

C#读写csv

    博客分类:
  • C#
阅读更多
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;
            }
        }


}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics