У меня есть представление MVC, которое правильно отображает модель. Теперь, когда меня попросили включить функцию Export to Excel на эту страницу, я услышал об EPPlus и попробовал. От this site Я думал, что у меня есть что-то, что просто выполнит эту работу.Модель экспорта EPPlus в Excel: System.NullReferenceException
После внесения изменений, соответствующих моим потребностям, я разработал это. Когда я тестировал функциональность в представлении, это сработало. Я нажал ссылку html actionlink, и файл Excel был сохранен правильно.
public void ExportToExcel(IEnumerable<FourCourseAudit> audit)
{
string pathUser = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
string pathDownload = Path.Combine(pathUser, "Documents");
FileInfo newFile = new FileInfo(pathDownload + "\\MyExport.xslx");
using (var excelFile = new ExcelPackage(newFile))
{
var worksheet = excelFile.Workbook.Worksheets.FirstOrDefault(x=>x.Name=="Sheet1");
if (worksheet == null)
{
worksheet.Workbook.Worksheets.Add("Sheet1");
}
worksheet.Cells["A1"].LoadFromCollection(Collection:audit, PrintHeaders:true);
excelFile.Save();
}
}
Однако, когда я опубликовал веб-сайт и протестировал его как обычный пользователь, я получил печальную «Null исключения» ошибка: System.NullReferenceException: Object reference not set to an instance of an object.
Возможные виновники:
- Null лист
- Null NewFile
- Null аудит
Это вызывает недоумение, потому что это работает, когда я запускаю это в режиме отладки с помощью VS, но ошибка нулевой ошибки появляется, когда она отключается от производственного сервера.
Есть ли что-то очевидное, я делаю неправильно с примером кода?
Это определенно перспективно. Теперь трюк может передать модель из моего представления, когда я нажимаю actionlink. Прямо сейчас, я получаю исключение null для «аудита». –
Это работает, когда я удаляю параметр аудита и помещаю его в функцию. Это сделало трюк - и подумать, что в других статьях форума говорится, что сохранить как вариант невозможно. –
Где находится модель, когда вы показываете ее в своем представлении? Если мое понимание правильное, вы только ОТОБРАЖИТЕ модель в представлении (и не отправляете ее для редактирования?). Если да, то откуда он берется для представления, которое его правильно отображает? Не могли бы вы снова создать? –