示例
改造PersonService.cs中的GetPersonsCSV()
public async Task<MemoryStream> GetPersonsCSV()
{
MemoryStream memoryStream = new MemoryStream();
StreamWriter streamWriter = new StreamWriter(memoryStream);
CsvConfiguration csvConfiguration = new CsvConfiguration(CultureInfo.InvariantCulture);
CsvWriter csvWriter = new CsvWriter(streamWriter, csvConfiguration, true);
csvWriter.WriteField(nameof(PersonResponse.PersonName));
csvWriter.WriteField(nameof(PersonResponse.Email));
csvWriter.WriteField(nameof(PersonResponse.DateOfBirth));
csvWriter.WriteField(nameof(PersonResponse.Age));
csvWriter.WriteField(nameof(PersonResponse.Gender));
csvWriter.WriteField(nameof(PersonResponse.Country));
csvWriter.WriteField(nameof(PersonResponse.Address));
csvWriter.WriteField(nameof(PersonResponse.ReceiveNewsLetters));
await csvWriter.NextRecordAsync();
List<PersonResponse> persons = await _db.Persons.Include(p => p.Country)
.Select(p => p.ToPersonResponse()).ToListAsync();
foreach(PersonResponse person in persons)
{
csvWriter.WriteField(person.PersonName);
csvWriter.WriteField(person.Email);
if (person.DateOfBirth.HasValue)
{
csvWriter.WriteField(person.DateOfBirth.Value.ToString("yyyy-MM-dd"));
}
else
{
csvWriter.WriteField("");
}
csvWriter.WriteField(person.Age);
csvWriter.WriteField(person.Gender);
csvWriter.WriteField(person.Country);
csvWriter.WriteField(person.Address);
csvWriter.WriteField(person.ReceiveNewsLetters);
await csvWriter.NextRecordAsync();
await csvWriter.FlushAsync();
}
memoryStream.Position = 0;
return memoryStream;
}
Gitee获取源码: