2014-02-18 12 views
0

CSV 파일에서 특정 열의 데이터를 추출해야하며 출력도 CSV 형식이어야합니다. 나는 CSV 데이터 추출에 대한 많은 솔루션을 통해 갈하지만 그들 중 누구도 CSV 형식 자체가csv 형식의 특정 열을 CSV 형식으로 추출하십시오.

예를 추출에 대해 이야기하지 :

public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 

       string filePath = "abc.csv"; 

       string csvContnet = File.ReadAllText(filePath); 

       // E.g. Suppose above csv has 9 columns 
       // And column headers are from A,B,C...I 
       // Now I want to select data from columheaders B,C and F along with header 
       string requiredCsvContent = this.GetRequiredCsvContent(csvContnet); 
      } 

      /// <summary> 
      /// Following function returns required CSV content from main csv File 
      /// </summary> 
      /// <param name="csvContnet"></param> 
      /// <returns></returns> 
      private string GetRequiredCsvContent(string csvContnet) 
      { 

      }} 
+1

사례를 게시 할 수 있습니까? – ken2k

+0

수정 해주세요 – Nilesh

+0

예제를 명확하게 설명해 주시겠습니까? 9 개의 헤더 (A -> I)가 있지만 7 개의 컬럼 만 있습니다. – ken2k

답변

0

귀하의 데이터는 TSV (탭으로 구분 된 값) 파일처럼 보인다. 모든 것을 클립 보드에 복사하여 Excel에 붙여 넣기 만하면됩니다. 그런 다음 D, E 및 F를 제외한 모든 열을 삭제하십시오. 마지막으로 파일> 다른 이름으로 저장> CSV로 이동하십시오.

+1

나는 그것을 수동으로하지 않고 C# .net으로하고 싶다. – Nilesh

1

나는 당신이 File.ReadLines 또는 File.ReadAllLines 그래서 당신은 당신이 쉽게 LINQ으로 원하는 것을 얻을 수 있습니다 사용하는 것이 좋습니다 :

var lines = File.ReadLines("asd") 
       .Skip(1) // header 
       .Select(line => 
       { 
        var parts = line.Split(','); 
        return string.Join(",", parts[1], parts[2], parts[5]); 
       }).ToList(); 

쉼표로 구분 형식으로 A, BF 열을 반환해야 함.

0

올바르게 읽는다면 B, C 및 F 열에서 헤더와 데이터를 추출하고 출력을 CSV 형식으로 문자열에 넣으시겠습니까? IdComLog.Data 사용이 밖으로 시도 (전체 공개, 내가 저자) :

var data = from row in IdComLog.Data.Formats.Csv.ReadRecords("inputFile.csv") 
      select new[]{ row[1].Value, row[2].Value, row[5].Value } 

var sw = new StringWriter(); 
IdComLog.Data.Formats.Csv.Write(sw, data); 

string requiredCsvContent = sw.ToString(); 

고도로 CSV와 함께 작동하도록 Split() 또는 Join()를 사용하지 않는 것이 좋습니다. 그것은 사소한 데이터를 깨뜨릴 것입니다.

관련 문제