Загрузите и загрузите файл excel в ASP.NET MVC с использованием epplus
Привет,
Требование заключается в том, что пользователь загружает файл excel с именами студентов и другими данными. После загрузки, на том же событии щелчка пользователь должен получить файл excel с указанием статуса строки за строкой, были ли данные студента созданы успешно или любое сообщение об ошибке.
При загрузке Нажмите кнопку Я вызываю ниже действие и публикую Excel и делаю все проверки материала в действии MVC
function uploadFile(fileType, fileUpload) { if (window.FormData !== undefined) { var files = fileUpload.files; // Create FormData object var fileData = new FormData(); // Looping over all files and add it to FormData object fileData.append(files[0].name, files[0]); $.ajax({ url: '/Admin/UploadNewStudents', type: "POST", contentType: false,// "application/vnd.ms-excel", // Not to set any content header processData: false, // Not to process data data: fileData, success: function (result) { alert(result); }, error: function (xhr) { } }); } else { alert("FormData is not supported."); } }
[HttpPost] public ActionResult UploadNewStudent() { try { HttpFileCollectionBase file = Request.Files; string Message = StudentExcel.ValidateExcel(Request); if (!string.IsNullOrEmpty(Message)) return Json(Message, JsonRequestBehavior.AllowGet); else { HttpPostedFileBase pfile = Request.Files[0]; DataSet ds = StudentExcel.GetExcelData(pfile); using (ExcelPackage pck = new ExcelPackage()) { ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Accounts"); ws.Cells["A1"].LoadFromDataTable(ds.Tables[0], true); Byte[] fileBytes = pck.GetAsByteArray(); Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=DataTable.xlsx"); Response.Charset = ""; Response.ContentType = "application/vnd.ms-excel"; StringWriter sw = new StringWriter(); Response.BinaryWrite(fileBytes); Response.End(); } } } catch (Exception ex) { } return View(); }
Я получаю желаемые данные в приведенном ниже коде и устанавливаю их в пакет EPplus и пытаюсь загрузить, но Excel не загружается. Я не хочу сохранять excel на сервере.
DataSet ds = StudentExcel.ValidateExcelData(pfile);
Что я уже пробовал:
Гуглить,
Я думаю, что поскольку метод действия-это post, Я не могу загрузить excel. Новичок в MVC, любая помощь будет оценена по достоинству
F-ES Sitecore
Вы не можете обрабатывать загрузку файлов через ajax, так как ваш js обрабатывает ответ и не может записать этот ответ в файл. Вместо того чтобы использовать ajax, просто используйте обычную форму, которая указывает на ваше действие, и имейте файл в качестве обычного элемента формы. Это заставит браузер выполнить действие и обработать ответ, который запустит менеджер загрузок.