2016-02-24 89 views
1

我似乎對這個問題的想法已經過時。我已儘量簡化,但每次都得到「找不到標題記錄」錯誤。用CSV Helper解析時找不到頭文件記錄

我的CSV文件

SIC,Description,Grouping 
1,text,group 

我的模型

public class SicCodeModel 
{ 
    public string SIC { get; set; } 
    public string Description { get; set; } 
    public string Grouping { get; set; } 
} 

我的地圖類

public sealed class SicCodeMap : CsvClassMap<SicCodeModel> 
{ 
    public SicCodeMap() 
    { 
     Map(m => m.SIC); 
     Map(m => m.Description); 
     Map(m => m.Grouping); 
    } 
} 

控制器代碼

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(); 
} 

是上傳文件

public class ImportModel 
{ 
    [Required] 
    public HttpPostedFileBase File { get; set; } 
} 

當我上傳的文件我的MVC模式,它的存在。但是當GetRecords運行時,我得到錯誤。

謝謝你的幫助。這看起來應該是超級簡單,但我必須錯過一些東西。

回答

1

我得到了這段代碼的工作。唯一的變化是控制器代碼。我從上傳的文件到StreamReader到CsvReader。目前運作良好。發生

StreamReader reader = new StreamReader(model.File.InputStream); 

using (CsvReader csvReader = new CsvReader(reader)) 
{ 
     var stuff = csvReader.GetRecords<SicCodeModel>(); 
} 
1

的錯誤,因爲你讀model.File.InputStream之前CsvReader你沒有返回位置光標在InputStreamCsvReader準備。

後行:model.File.InputStream.Read(uploadedFile, 0, uploadedFile.Length);只需撥打model.File.InputStream.Seek(0, SeekOrigin.Begin);,您將不會再看到該錯誤。