public IHttpActionResult GetExcel(string id) { var studyProject = StudyManager.Instance.GetStudyProject(id); if (studyProject == null) { return(NotFound()); } var excelFile = new ExcelFileManager { StudyProject = studyProject }; var data = excelFile.GenerateExcelFile(); if (data == null) { return(InternalServerError()); } var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(new MemoryStream(data)) }; response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = "export.xlsx"; // Media types // https://stackoverflow.com/questions/4212861/what-is-a-correct-mime-type-for-docx-pptx-etc response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); return(ResponseMessage(response)); }
public MainWindow() { InitializeComponent(); _excelFileMgr = new ExcelFileManager(); DataContext = this; }
public ActionResult Index(Job job) { using (var transaction = db.Database.BeginTransaction()) { try { var file = Request.Files[0]; if (FileManager.CheckExtension(file, new string[] { ".xls", ".csv" })) { //Include for getting related tables var template = db.Templates.Include("Placeholders").Where(p => p.TemplateId == job.Template.TemplateId).FirstOrDefault(); job.Template = template; job.FileName = FileManager.SaveFile(file, FileType.Data); job.CreatedBy = User.Identity.Name; job.CreatedOn = DateTime.Now; db.Jobs.Add(job); var excelFileManager = new ExcelFileManager(job.FileName); var excelHeaders = excelFileManager.GetExcelHeaders(); var fieldNames = job.Template.Placeholders.Select(p => p.FieldName); ValidatePlaceHolders(job, excelHeaders); ValidateCertificateReference(job, excelHeaders); var rows = excelFileManager.GetExcelRows(); var count = rows.Count(); List <Certificate> newCertificates = new List <Certificate>(); for (int i = 0; i < count; i++) { var certificate = CreateCertificate(job, rows, i); newCertificates.Add(certificate); db.Certificates.Add(certificate); } db.SaveChanges(); CreateCertificateFiles(job, template, newCertificates); transaction.Commit(); } else { throw new Exception("Wrong file type used. Please use XLS or CSV format."); } return(RedirectToAction("details", new { id = job.JobId })); } catch (Exception ex) { transaction.Rollback(); ErrorSignal.FromCurrentContext().Raise(ex); ViewBag.Error = ex.Message; ViewBag.Templates = new SelectList(db.Templates.ToList(), "TemplateId", "Name"); return(View(job)); } } }