Почему помощник CSV читает только первую строку, используя ASP.Net MVC? - PullRequest
0 голосов
/ 29 мая 2019

У меня проблема при чтении файла CSV с использованием CSVHelper, потому что он возвращает только первую строку CSV с заголовком.

Я использовал этот код при чтении файла CSV.

 using (var reader = new StreamReader(filePath))
 using (var csv = new CsvReader(reader))
 {
     csv.Configuration.RegisterClassMap<FundTransferMapSingle>();
     var json = JsonConvert.SerializeObject(csv.GetRecords<FundTransferSingle>());
 }

Я использовал некоторые карты для этого

public class FundTransferMapSingle : ClassMap<FundTransferSingle>
    {
        public FundTransferMapSingle()
        {
            Map(m => m.senderRefId).Name("senderRefId");
            Map(m => m.transRequestDate).Name("transRequestDate");
            Map(m => m.particulars).Name("particulars");

            Map(m => m.sender).ConvertUsing(row =>
            {
                var senderlist = new List<Sender>
                {
                    new Sender { name = row.GetField("senderName"),
                                 address = new List<Address>
                                    {
                                        new Address {line1 = row.GetField("senderAddrLine1"),
                                            line2 = row.GetField("senderAddrLine2"),
                                            city = row.GetField("senderAddrCity"),
                                            province = row.GetField("senderProvince"),
                                            zipCode = row.GetField("senderAddrZipcode"),
                                            country = row.GetField("senderAddrCountry")}
                                    }
                               }
                };
                return senderlist;
            });

}

Это CSV-файл, который я читаю

senderRefId,transRequestDate,particulars,senderName,senderAddrLine1
TRANSFER0001,2018-08-10T08:40:45.897,particulars,Name1,Address1
TRANSFER0002,2018-08-10T08:40:45.897,particulars,Name2,Address2

Я получаю результат через мою переменную json.

1 Ответ

1 голос
/ 29 мая 2019

Попробуйте загрузить данные в DataTable, используя CsvReader:

DataTable csvTable = new DataTable();
using (CsvReader csvReader = new CsvReader(new StreamReader(stream), true))
{
    csvTable.Load(csvReader);
}

Затем получите json из DataTable:

using Newtonsoft.JSON;  

public string DataTableToJSONWithJSONNet(DataTable table) {  
   string JSONString=string.Empty;  
   JSONString = JSONConvert.SerializeObject(table);  
   return JSONString;  
} 
...