读取csv 文件

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ReadCSV
{
class Program
{
public static void Main(string[] args)
{
List<Contract> list = ReadCSV(@"‪C:UsersAdministratorSourceReposReadCSVReadCSVinDebugEE4.csv");

}
public static List<Contract> ReadCSV( string path)
{

List<Contract> list = new List<Contract>();
StreamReader sr = new StreamReader("EE6.csv", Encoding.UTF8);
String line;
while ((line = sr.ReadLine()) != null)
{
if (line.Contains("DisplayName"))
continue;
list.Add(readlineToContract(line, 15));
}
return list;
}

public static Contract readlineToContract(string line, int count)
{
Contract contract = new Contract();
string[] strArray = line.Split(',');
if (count == strArray.Count())
{
contract.Name = strArray[4];
contract.DisplayName = strArray[5];
contract.Type = strArray[8];
contract.Category = strArray[9];
contract.State = strArray[10];
contract.Stage = strArray[11];
}
else
{
//deal with doublue " contains ,
List<string> temp = new List<string>();
for (int i = 0; i < line.ToArray().Length; i++)
{
if (line[i] != '"')
{
int index = line.IndexOf(",", i);
if (index == -1)
temp.Add(line.Substring(i));
else
{
temp.Add(line.Substring(i, index - i));
i = index;
}
}
else if (line[i] == ',')
{
temp.Add(string.Empty);
}
else if (line[i] == '"')
{
int index = line.IndexOf(""", i+1);
temp.Add(line.Substring(i+1, index - i-1));
i = index;
}

}
if (line.EndsWith(",")) temp.Add(string.Empty);

contract.Name = temp[4];
contract.DisplayName = temp[5];
contract.Type = temp[8];
contract.Category = temp[9];
contract.State = temp[10];
contract.Stage = temp[11];
}
return contract;
}
}

class Contract
{
public string Name { set; get; }
public string DisplayName { set; get; }
public string Type { set; get; }
public string Category { set; get; }
public string State { set; get; }
public string Stage { set; get; }


}
}

I'm fine, it's ok
原文地址:https://www.cnblogs.com/skywss27/p/9949709.html