Files
FKGees/FKGees/Services/CsvService.cs
2026-05-20 21:24:54 +02:00

39 lines
1.6 KiB
C#

using System.Globalization;
using System.Text;
using CsvHelper;
using CsvHelper.Configuration;
using CsvHelper.TypeConversion;
namespace FKGees.Services;
public class CsvService(ILogger<App> logger)
{
public async Task CsvExport<T>(string filePath, IEnumerable<T> records)
{
try
{
await using var writer = new StreamWriter(filePath);
IWriterConfiguration conf = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ";",
Mode = CsvMode.RFC4180,
ShouldQuote = quoteArgs => quoteArgs.Field != nameof(DecretsResult.Data)
&& quoteArgs.Field != nameof(DecretsResult.DataWplywu)
&& !DateTime.TryParseExact(quoteArgs.Field, Consts.DefaultDateFormat, CultureInfo.InvariantCulture,
DateTimeStyles.None, out _),
Encoding = Encoding.GetEncoding("Windows-1250")
};
await using var csv = new CsvWriter(writer, conf);
var options = new TypeConverterOptions {Formats = [Consts.DefaultDateFormat], NullValues = {string.Empty}};
csv.Context.TypeConverterOptionsCache.AddOptions<DateTime>(options);
csv.Context.TypeConverterOptionsCache.AddOptions<DateTime?>(options);
await csv.WriteRecordsAsync(records);
}
catch (Exception e)
{
logger.LogError(e, "Error");
throw;
}
}
}