2011-04-20 5 views
0

FileHelpers.CsvEngine.DataTableToCsv을 사용하여 CSV로 데이터 테이블을 내보내는 중. FileHelperEngine처럼 "BeforeWriteRecord"이벤트를 연결할 수 없습니다. CSVEngine 클래스에서 작업을 후킹 할 수 있습니까?FileHelper.CSVEngine을 BeforeWriteRecord 이벤트에 바인딩하는 방법

+0

, 나는 이벤트와 같은 BeforeWriteRecord에 대한 콜백 fucntion로 새 매개 변수 Func을 <개체 [], [] 객체> 허용하도록 CSVEngine.DataTableToCSV proc 디렉토리를 수정했습니다. – AbrahamJP

답변

0

클래스는 현재 BeforeWriteRecord 이벤트를 지원하지 않습니다 (버전 2.9.9). 이유는 BeforeWriteRecordEventArgsDataTable에서 내보낼 때 관련이없는 FileHelpers 레코드 클래스를 필요로한다고 생각합니다.

DataTableToCsv 코드는 간단한 정적 방법이므로 사용자가 직접 교체 할 수 있습니다. 코드는 here 아래 인용 : 임시 해결책으로

public static void DataTableToCsv(DataTable dt, string filename, CsvOptions options) 
    { 
     using (var fs = new StreamWriter(filename, false, options.Encoding, EngineBase.DefaultWriteBufferSize)) 
     { 
      foreach (DataRow dr in dt.Rows) 
      { 
       object[] fields = dr.ItemArray; 
       for (int i = 0; i < fields.Length; i++) 
       { 
        if (i > 0) 
         fs.Write(options.Delimiter); 
        fs.Write(options.ValueToString(fields[i])); 
       } 
       fs.Write(StringHelper.NewLine); 
      } 
      fs.Close(); 
     } 
    } 
관련 문제