2013-10-11 5 views
1

내 CSV에 대한 질문이 있습니다. CSV를 내보내고 C#으로 읽습니다. CSV의 각 행의 마지막 열은 A, B, C, D, E 또는 G입니다. 자, 내 CSV를 조각처럼 잘라 내고 싶습니다. A와 D가 포함 된 선으로 새로운 CSV를 원합니다. 예를 들어 B와 C가 포함 된 또 다른 CSV가 필요합니다.값에 따라 다른 CSV 파일

누구나 올바른 방향으로 나를 가리킬 수 있습니까? 나는

StreamReader debtors = new StreamReader(@"C:\CSV\Debtors.csv"); 
StreamWriter debtorsMetaal = new StreamWriter(@"C:\CSV\DebtorsMetaal.csv"); 
StreamWriter debtorsSystemen = new StreamWriter(@"C:\CSV\DebtorsSystemen.csv"); 
StreamWriter debtorsHolding = new StreamWriter(@"C:\CSV\DebtorsHolding.csv"); 

while(debtors.Peek() >=0) 
{ 
    string line = debtors.ReadLine(); 
    try 
    { 
    string[] rowsArray = line.Split(';'); 

    //..... etc 

지금 선이 조각에 내 코드의 일부이다 .. 붙어있어,하지만 어떻게 내가 내 라인의 마지막 colomn을 선택에 따라 새로운 CSV 파일을 만들 수 있습니다 마지막 컬럼의 값은?

debtorsMetaal, debtorsSystemen 및 debtorsHolding이 새로운 CSV 파일이됩니다.

예 : 나는 정보를 원하시면 다음 한 CSV의 행에서

number - name- description - type 

유형은 이제 라인을 원하는 위치 타입 = A와 A, B, C, D, E 또는 G. 을가 될 수 있습니다 lines 여기서 type = D는 하나의 CSV 파일에 함께 표시됩니다. 이것도 가능합니까?

값 A, B, C, D, E 또는 G는 항상 Excel 형식의 열 AJ로 표시됩니다. 그러나

var adLines = new List<string>(); 
var bcLines = new List<string>(); 
var unknownLines = new List<string>(); 
var adList = new[]{"A", "D"}; 
var bcList = new[]{"B", "C"}; 
using(var debtors = new StreamReader(@"C:\CSV\Debtors.csv")) 
{ 
    string line = null; 
    while((line = debtors.ReadLine()) != null) 
    { 
     string[] columns = line.Split(';'); // you should check if columns.Length is correct 
     string lastColumn = columns.Last().Trim(); 
     if(adList.Contains(lastColumn, StringComparer.CurrentCultureIgnoreCase)) 
      adLines.Add(line); 
     else if(bcList.Contains(lastColumn, StringComparer.CurrentCultureIgnoreCase)) 
      bcLines.Add(line); 
     else 
      unknownLines.Add(line); 
    } 
} 
File.WriteAllLines(@"C:\CSV\DebtorsSystemen.csv", adLines); 
File.WriteAllLines(@"C:\CSV\DebtorsHolding.csv", bcLines); 

일반적으로 당신은 바퀴를 재발견하지 말아야과 같은 abvailable CSV 파서를 사용합니다 :

+0

당신이 누락 나머지 동안 블록? 왜 목록 으로 읽을 수 없으며 마지막 열을보고 어떤 파일을 쓸지 확인하십시오. – Harrison

+0

CSV 파일을 읽는 것은 생각만큼 쉽지 않습니다. 나는이 도서관을 보길 권한다 : http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader – M4N

+0

나는 더 많은 정보를 추가했다 – Matheno

답변

2

는이 같은 루프를 사용하는 것이

http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

+1

나는 당신이 최고라고 당신에게 말하지 않았습니까?! 너 한테 맥주 빚 졌어! : D – Matheno

+0

조심해, 내가 너를 데려 갈지 모르지만, 그것은 짧은 거리다;) –

+0

하하, 나는 이웃을 알아 차렸다! ;) – Matheno

관련 문제