BaconSteak
BaconSteak

Reputation: 23

CsvHelper CsvWriter is empty when source DataTable contains less than 12 rows

When writing to stream (Maybe other destinations too) CsvHelper does not return anything if my DataTable contains less than 12 rows. I tested adding rows one by one until I get a result in the string myCsvAsString variable.

Anyone ran into this problem? Here is the code I am using to reproduce it:

        var stream = new MemoryStream();

        using (var writer = new StreamWriter(stream))
        using (var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture))
        {
            if (includeHeaders)
            {
                foreach (DataColumn column in dataTable.Columns)
                {
                    csvWriter.WriteField(column.ColumnName);
                }

                csvWriter.NextRecord();
            }

            foreach (DataRow row in dataTable.Rows)
            {
                for (var i = 0; i < dataTable.Columns.Count; i++)
                {
                    csvWriter.WriteField(row[i]);
                }

                csvWriter.NextRecord();
            }

            csvWriter.Flush();
            stream.Position = 0;
            StreamReader reader = new StreamReader(stream);
            string myCsvAsString = reader.ReadToEnd();
         }

Upvotes: 1

Views: 412

Answers (1)

BaconSteak
BaconSteak

Reputation: 23

Ok I found the issue, I was flushing the csvWriter but I did not flush the StreamWriter.

I added writer.Flush() just after csvWriter.Flush() and the stream is complete.

Upvotes: 1

Related Questions