2011-04-20 70 views
0

使用FileHelpers.CsvEngine.DataTableToCsv將數據表導出爲CSV時。我無法像「FileHelperEngine」那樣勾選「BeforeWriteRecord」事件。是否有可能在CSVEngine類中掛鉤操作。如何將FileHelper.CSVEngine綁定到BeforeWriteRecord事件

+0

作爲一個臨時的解決方案,我修改了CSVEngine.DataTableToCSV PROC接受一個新的參數函數功能<對象[],對象[]>作爲回調溫控功能爲BeforeWriteRecord等事件。 – AbrahamJP 2011-04-20 17:22:23

回答

0

CSVEngine類當前不支持(版本2.9.9)支持BeforeWriteRecord事件。我認爲原因是BeforeWriteRecordEventArgs預計從DataTable導出時不相關的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(); 
     } 
    }