public static FormExcelImportResult SubmitExternalFormFromExcel(byte[] result, int formId) { FormExcelImportResult importResult = new FormExcelImportResult(); try { MemoryStream ms = new MemoryStream(result); DataTable dt = ExcelHelper.GetDataTableFromXls(ms); Form form = GetForm(formId); bool valid = true; //Validating foreach (var item in form.FormFields) { if (!dt.Columns.Contains(item.Label)) { valid = false; } } if (!valid) { LogHelper.LogInfo("Excel file not valid for submission.", -1); importResult.Message = "Import filen är inte giltig, vänligen ladda hem mall filen och prova med den. "; return(importResult); } foreach (DataRow row in dt.Rows) { List <FormExternalSubmitValues> submitValues = new List <FormExternalSubmitValues>(); foreach (var item in form.FormFields) { submitValues.Add(new FormExternalSubmitValues() { FormId = formId, FormFieldId = item.Id, Value = row[item.Label].ToString(), Date = DateTime.Now }); } SubmitExternalForm(submitValues); importResult.Count++; } importResult.Success = true; } catch (Exception ex) { LogHelper.LogError("Error importing excel to form. FormId: " + formId, ex, -1); importResult.Message = "Ett oväntat fel uppstod, vänligen försök igen."; } return(importResult); }
public async Task <HttpResponseMessage> ImportExcelFile() { HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); if (!Request.Content.IsMimeMultipartContent()) { response.StatusCode = HttpStatusCode.UnsupportedMediaType; } else { MultipartMemoryStreamProvider provider = new MultipartMemoryStreamProvider(); await Request.Content.ReadAsMultipartAsync(provider); Task <byte[]> fileData = provider.Contents.First().ReadAsByteArrayAsync(); int formId = int.Parse(((System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.Form["formId"]); FormExcelImportResult result = FormsBLL.SubmitExternalFormFromExcel(fileData.Result, formId); response.Content = new ObjectContent <FormExcelImportResult>(result, new JsonMediaTypeFormatter()); } return(response); }