Reputation: 1422
I tried to write to CSV file using CsvHelper in C#.
This is the link to the library http://joshclose.github.io/CsvHelper/
I used the code in web site.
Here is my code:
var csv = new CsvWriter(writer);
csv.Configuration.Encoding = Encoding.UTF8;
foreach (var value in valuess)
{
csv.WriteRecord(value);
}
It writes only a part of data to csv file.
Last rows were missing.
Could you please help with this.
Upvotes: 28
Views: 90518
Reputation: 19
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = Delimiter
};
using (var csvWriter = new CsvWriter(writer, configuration))
{
csvWriter.WriteRecords(itemsData);
csvWriter.Flush();
}
//This is an example that might help you
Upvotes: 0
Reputation: 1625
Adding to @greg's answer:
using (var sr = new StreamWriter(@"C:\out.csv", false, Encoding.UTF8)) {
using (var csv = new CsvWriter(sr)) {
csv.WriteRecords(values);
}
}
Upvotes: 2
Reputation: 3676
You need to flush the stream. The Using statement will flush when out of scope.
using (TextWriter writer = new StreamWriter(@"C:\test.csv", false, System.Text.Encoding.UTF8))
{
var csv = new CsvWriter(writer);
csv.WriteRecords(values); // where values implements IEnumerable
}
Upvotes: 44
Reputation: 1422
when, I added this code after the loop code is working well
var csv = new CsvWriter(writer);
csv.Configuration.Encoding = Encoding.UTF8;
foreach (var value in valuess)
{
csv.WriteRecord(value);
}
writer.Close();
The problem occurred because I did not close the Connection
Upvotes: 10
Reputation: 22501
Assuming that writer
is some kind of TextWriter, you should add a call to flush the contents before closing the writer:
writer.Flush()
If the last lines are missing, this is the most likely reason.
Upvotes: 8