예제 #1
0
        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));
        }
예제 #2
0
        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));
                }
            }
        }