Home > Mobile >  Is there a way to not generate a file via CSV Helper?
Is there a way to not generate a file via CSV Helper?

Time:12-06

If the any opportunity to not generate csv file in system? I don't wanna to store it in my application and can we generate it smth on fly? As return I want to converted csv to base64.

    var path = Path.Combine(Directory.GetCurrentDirectory(), "test.csv");
    await using var writer = new StreamWriter(path);
    await using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
    {
        await csv.WriteRecordsAsync(list);
    }

    var bytes = await File.ReadAllBytesAsync(path);
    return Convert.ToBase64String(bytes);

CodePudding user response:

A StreamWriter can write to any stream, including a MemoryStream:

using var ms=new MemoryStream();
using var writer = new StreamWriter(ms);

...
return Convert.ToBase64String(ms.GetBuffer());

CSV files are text files though, so converting them to BASE64 isn't very useful. StreamWriter uses UTF8 encoding by default so it already handles any language.

It would be better to keep the text as text, especially if it's going to be stored in a text field in a database. This can be done by reading the bytes using a StreamReader

using var reader=new StreamReader(ms);
ms.Position=0;
var csvText=reader.ReadToEnd();

var csvText

CodePudding user response:

As @Oliver said in comments good solution is to use MemoryStream instead of creating a File

  • Related