【问题标题】:Why only the first row is read by the CSV Helper using ASP.Net MVC?为什么 CSV Helper 使用 ASP.Net MVC 只读取第一行?
【发布时间】:2019-05-29 04:32:06
【问题描述】:

我在使用 CSVHelper 读取 CSV 文件时遇到问题,因为它只返回带有标题的 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 得到结果。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 csvhelper


    【解决方案1】:

    尝试使用 CsvReader 将数据加载到 DataTable 中:

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

    然后从DataTable中获取json:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      相关资源
      最近更新 更多