Проблема с анализом десятичных чисел с помощью CsvHelper в c #.
Я создал класс, который получает CSV-файл из байта [] вместо файла, и он работает правильно.
public static List<Topic> GetAll(byte[] attachmentBytes)
{
using (Stream stream = new MemoryStream(attachmentBytes))
{
using (var reader = new StreamReader(stream, Encoding.GetEncoding(1252), true))
{
using (var csv = new CsvReader(reader))
{
csv.Configuration.Delimiter = ";";
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.CultureInfo = CultureInfo.InvariantCulture;
return csv.GetRecords<Topic>().ToList();
}
}
}
}
Как и выМожно видеть, что я добавил класс для сопоставления CSV с объектом:
public class Topic
{
[Name("ID")]
public int Id { get; set; }
[Name("description")]
public string Description { get; set; }
[Name("DecimalPTS")]
public decimal? DecimalPts { get; set; }
}
И вот так выглядит мой пример данных CSV.
ID;description;DecimalPTS
1;singing;0,6
2;speaking;2,6
3;working;3,3
Но это решение выдает ошибку с
CsvHelper.TypeConversion.TypeConverterException : The conversion cannot be performed.
Text: '0,6'
MemberType: System.Nullable`1[[System.Decimal, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Когда я заменил, просто сделайте Replace (',', '.');на входе, локальный тестовый прохождение, но на моем сервере тестирование не проходит (кажется, что у меня другая культура локально и на сервере)
Что я пытался решить эту проблему:
- Я добавил
csv.Configuration.CultureInfo = CultureInfo.InvariantCulture;
- Я использовал
7.1.1
CSV Version, но изменил на 12.1.2
, и все еще та же ошибка
К сожалению, ничего не помогло.