Я пытаюсь загрузить файл csv и реализовать CSVHelper, компетентный с использованием MVC3.CSVHelper с ASP.NET MVC 3
https://github.com/JoshClose/CsvHelper
я не нашел пример использования этого с загрузкой файлов. В принципе, мне нужно взять файл CSV и отобразить объекты сущности и сохранить в БД. Вот мои объекты:
public class SurveyEmailListModels
{
[Key]
public int SurveyEmailListId { get; set; }
[CsvField(Index = 0)]
public int ProgramId { get; set; }
[CsvField(Index = 1)]
public virtual SurveyProgramModels SurveyProgramModels { get; set; }
[CsvField(Index = 2)]
public string SurveyEmailAddress { get; set; }
[CsvField(Index = 3)]
public bool SurveyResponded { get; set; }
}
Загрузить Handler:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file, SurveyEmailListModels surveyemaillistmodels, int id)
{
if (file != null && file.ContentLength > 0)
{
// Collect file and place into directory for source file download
var appData = Server.MapPath("~/csv/");
var filename = Path.Combine(appData, Path.GetFileName(file.FileName));
file.SaveAs(filename);
// surveyemaillistmodels.SurveyEmailAddress = "[email protected]";
// surveyemaillistmodels.SurveyResponded = true;
// surveyemaillistmodels.ProgramId = id;
db.SurveyEmailListModels.Add(surveyemaillistmodels);
db.SaveChanges();
return Content(filename);
}
return Json(true);
}
Я не уверен, как цикл через файл CSV и сохранить в БД. Есть ли у кого-нибудь пример?
Привет, Дарин, спасибо, что ответили. Я пытаюсь реализовать ваше решение, и я не вижу значения CSV внутри отладчика. Я установил точку останова на «return csvReader.GetRecords», и я не вижу никаких значений. Если посмотреть под местными жителями «CSVReader», я вижу «+ \t \t \t CurrentRecord„csvReader.CurrentRecord“бросил исключение типа \t строки„CsvHelper.CsvReaderException“[] {} CsvHelper.CsvReaderException» – user547794
Вы увидите результаты, если вы помещаете контрольную точку внутри действия вашего контроллера и проверяете переменную модели. Или просто используйте временную переменную внутри связки для модели, прежде чем возвращаться к осмотру. Также убедитесь, что вы прочитали документацию CsvHelpers для правильного использования и ожидаемого формата. Например, ваше свойство SurveyEmailListId не украшено атрибутом '[CsvField (Ignore = true)]', который может вызвать ошибки. Если у вас возникли проблемы с использованием CsvHelpers, запустите новый вопрос, так как это не имеет никакого отношения к ASP.NET MVC. –
ОК, здесь я задал новый вопрос: http://stackoverflow.com/questions/11086942/using-csvhelper-on-file-upload – user547794