Как связать FileHelper.CSVEngine с событием BeforeWriteRecord - PullRequest
0 голосов
/ 20 апреля 2011

При экспорте таблицы данных в CSV с помощью FileHelpers.CsvEngine.DataTableToCsv.Я не мог подключить событие "BeforeWriteRecord", как я сделал для FileHelperEngine.Есть ли возможность перехватывать операции в классе CSVEngine.

1 Ответ

0 голосов
/ 22 февраля 2012

Класс CSVEngine в настоящее время (версия 2.9.9) не поддерживает событие BeforeWriteRecord. Я думаю, причина в том, что BeforeWriteRecordEventArgs ожидает класс записи FileHelpers, который не имеет отношения при экспорте из DataTable.

Код для DataTableToCsv - это простой статический метод, поэтому было бы легко обеспечить собственную замену. Код здесь и указан ниже:

    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();
        }
    }
...