3

この問題に関するアイデアが不足しているようです。できるだけシンプルにしましたが、毎回「ヘッダーレコードが見つかりませんでした」というエラーが表示されます。

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

ファイルをアップロードしている MVC モデル

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

ファイルをアップロードすると、そこにあります。しかし、GetRecords を実行すると、エラーが発生します。

助けてくれてありがとう。これは非常に単純なように思えますが、何かが欠けているに違いありません。

4

2 に答える 2

5

model.File.InputStreamエラーが発生したのは、前に読んで、 の準備のためにCsvReader位置カーソルを に戻さなかったためです。InputStreamCsvReader

行の後:model.File.InputStream.Read(uploadedFile, 0, uploadedFile.Length);呼び出すだけでmodel.File.InputStream.Seek(0, SeekOrigin.Begin);、そのエラーは再び表示されません。

于 2016-07-05T16:22:02.153 に答える
1

I got this code to work. The only change was to the controller code. I got right from the uploaded file to StreamReader to the CsvReader. Working well so far.

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

using (CsvReader csvReader = new CsvReader(reader))
{
      var stuff = csvReader.GetRecords<SicCodeModel>();
}
于 2016-02-24T18:15:37.547 に答える