Chr*_*uer 3 asp.net-mvc csvhelper
我似乎对这个问题已经没有想法了。我已将其简化为尽可能简单,但每次都会出现“未找到标题记录”错误。
我的 CSV 文件
SIC,Description,Grouping
1,text,group
Run Code Online (Sandbox Code Playgroud)
我的模型
public class SicCodeModel
{
public string SIC { get; set; }
public string Description { get; set; }
public string Grouping { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的地图类
public sealed class SicCodeMap : CsvClassMap<SicCodeModel>
{
public SicCodeMap()
{
Map(m => m.SIC);
Map(m => m.Description);
Map(m => m.Grouping);
}
}
Run Code Online (Sandbox Code Playgroud)
控制器代码
byte[] uploadedFile = new byte[model.File.InputStream.Length];
model.File.InputStream.Read(uploadedFile, 0, uploadedFile.Length);
using (var reader = new StreamReader(model.File.InputStream))
using (var csvReader = new CsvReader(reader))
{
csvReader.Configuration.RegisterClassMap<SicCodeMap>();
var items = csvReader.GetRecords<SicCodeModel>().ToList();
}
Run Code Online (Sandbox Code Playgroud)
我正在上传文件的 MVC 模型
public class ImportModel
{
[Required]
public HttpPostedFileBase File { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我上传文件时,它就在那里。但是当 GetRecords 运行时,我收到错误消息。
感谢您的任何帮助。这看起来应该非常简单,但我一定遗漏了一些东西。
对于那些偶然发现这篇文章而没有真正正确阅读问题的人(像我一样),这实际上是我的解决方案:
csv.Read();
csv.ReadHeader();
Run Code Online (Sandbox Code Playgroud)
例子:
using var reader = new StreamReader(filepathToCsv);
using var csv = new CsvReader(reader, csvConfig);
csv.Read();
csv.ReadHeader();
var records = csv.GetRecords<MyType>().ToArray();
Run Code Online (Sandbox Code Playgroud)
希望能帮助像我一样可怜的迷失的灵魂
发生错误是因为您model.File.InputStream之前阅读过CsvReader并且没有返回位置光标InputStream以准备它CsvReader。
行后:model.File.InputStream.Read(uploadedFile, 0, uploadedFile.Length);只需拨打电话model.File.InputStream.Seek(0, SeekOrigin.Begin);,您就不会再看到该错误。
| 归档时间: |
|
| 查看次数: |
3527 次 |
| 最近记录: |