我正在将CSV文件从客户端上传到.NET CORE Web API应用程序。
我正在使用CsvHelper.net库。
我收到文件成功,我想解析到我的自定义类,这样我就可以通过csv行循环。
但是每次我得到Empty的结果就像没有行一样。
我不知道我的方法有什么问题:
[HttpPost("import")]
public async Task<ActionResult> ImportData([FromForm] IFormFile file)
{
using var memoryStream = new MemoryStream(new byte[file.Length]);
await file.CopyToAsync(memoryStream);
memoryStream.Position = 0;
using (var reader = new StreamReader(memoryStream))
using (var csvReader = new CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture))
{
csvReader.Read();
var records = csvReader.GetRecords<SiteDto>();
}
return Ok("ok");
}
这就是我的CSV看起来像:
我的网站Dto:
public class SiteDto
{
public long Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public string CompanyName { get; set; }
public string Location { get; set; }
}
当我展开我的结果时,我看到了一些类似于警告的东西?
3条答案
按热度按时间yqkkidmi1#
我已经创建了通用csv文件转换器列表的T类型
用这个
postedFile是IFormFile,TypeModal是Entity
slhcrj9b2#
https://joshclose.github.io/CsvHelper/getting-started
GetRecords方法将返回一个将产生记录的IEnumerable。这意味着在迭代记录时一次只返回一条记录。
尝试调用
ToList()
来迭代记录并删除csvReader.Read();
。GetRecords()
在内部调用Read()
。同时使用这两种方法会导致CsvReader
跳过标题行。还要向类中添加一个name属性,以便
CsvHelper
知道如何MapId
属性。0pizxfdo3#