private FileInfoModel GetFileInfoModel(ExcelFileReaderInfo info, string extention) { FileInfoModel FileReaderInfo = new FileInfoModel(); FileReaderInfo.Data = info.Data; FileReaderInfo.Dateformat = info.Dateformat; FileReaderInfo.Decimal = info.Decimal; FileReaderInfo.Offset = info.Offset; FileReaderInfo.Orientation = info.Orientation; FileReaderInfo.Variables = info.Variables; //Use the given file and the given sheet format to create a json-table string filePath = TaskManager.Bus[EasyUploadTaskManager.FILEPATH].ToString(); string jsonTable = "[]"; FileStream fis = null; //FileStream for the users file fis = new FileStream(filePath, FileMode.Open, FileAccess.Read); UploadUIHelper uploadUIHelper = new UploadUIHelper(fis); string activeWorksheet; if (!TaskManager.Bus.ContainsKey(TaskManager.ACTIVE_WOKSHEET_URI)) { activeWorksheet = uploadUIHelper.GetFirstWorksheetUri().ToString(); TaskManager.AddToBus(TaskManager.ACTIVE_WOKSHEET_URI, activeWorksheet); } else { activeWorksheet = TaskManager.Bus[EasyUploadTaskManager.ACTIVE_WOKSHEET_URI].ToString(); } FileReaderInfo.activeSheetUri = activeWorksheet; FileReaderInfo.SheetUriDictionary = uploadUIHelper.GetWorksheetUris(); // Check if the areas have already been selected, if yes, use them (Important when jumping back to this step) if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_DATA_AREA)) { FileReaderInfo.DataArea = (List <string>)TaskManager.Bus[TaskManager.SHEET_DATA_AREA]; } if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_HEADER_AREA)) { FileReaderInfo.HeaderArea = TaskManager.Bus[TaskManager.SHEET_HEADER_AREA].ToString(); } //Generate the table for the active worksheet jsonTable = uploadUIHelper.GenerateJsonTable(activeWorksheet); if (!String.IsNullOrEmpty(jsonTable)) { TaskManager.AddToBus(EasyUploadTaskManager.SHEET_JSON_DATA, jsonTable); } fis.Close(); return(FileReaderInfo); }
public ActionResult ChangeWorksheet(string sheetIdentifier) { TaskManager = (TaskManager)Session["TaskManager"]; #region Generate table for selected sheet string filePath = TaskManager.Bus[EasyUploadTaskManager.FILEPATH].ToString(); FileStream fis = null; string jsonTable = "[]"; try { //FileStream for the users file fis = new FileStream(filePath, FileMode.Open, FileAccess.Read); //Transforms the content of the file into a 2d-json-array UploadUIHelper uploadUIHelper = new UploadUIHelper(fis); jsonTable = uploadUIHelper.GenerateJsonTable(sheetIdentifier); if (!String.IsNullOrEmpty(jsonTable)) { TaskManager.AddToBus(TaskManager.SHEET_JSON_DATA, jsonTable); } TaskManager.AddToBus(TaskManager.ACTIVE_WOKSHEET_URI, sheetIdentifier); } catch (Exception ex) { LoggerFactory.LogCustom(ex.Message); } finally { if (fis != null) { fis.Close(); } } #endregion Generate table for selected sheet //Send back the table-data return(Content(jsonTable, "application/json")); }
public ActionResult SelectedAreaToBus() { string headerArea = null; string dataArea = null; string worksheeturi = ""; TaskManager TaskManager = (TaskManager)Session["TaskManager"]; foreach (string key in Request.Form.AllKeys) { if ("dataArea" == key) { dataArea = Request.Form[key]; } if ("headerArea" == key) { headerArea = Request.Form[key]; } } FileInfoModel model = new FileInfoModel(); //read data area from request if (dataArea != null) { if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_DATA_AREA)) { model.DataArea = (List <string>)TaskManager.Bus[TaskManager.SHEET_DATA_AREA]; } //dataArea == "" means the resetButton was clicked if (model.DataArea == null || dataArea == "") { model.DataArea = new List <string>(); } if (dataArea != "") { int[] newArea = JsonConvert.DeserializeObject <int[]>(dataArea); Boolean contains = false; foreach (string area in model.DataArea) { int[] oldArea = JsonConvert.DeserializeObject <int[]>(area); //If one of the already selected areas contains the new one, don't add the new one to the selection (prevents duplicate selection) if (oldArea[0] <= newArea[0] && oldArea[2] >= newArea[2] && oldArea[1] <= newArea[1] && oldArea[3] >= newArea[3]) { contains = true; } } if (!contains) { //If the new area contains one (or several) of the already selected areas, remove the old ones for (int i = model.DataArea.Count - 1; i >= 0; i--) { int[] oldArea = JsonConvert.DeserializeObject <int[]>(model.DataArea[i]); if (newArea[0] <= oldArea[0] && newArea[2] >= oldArea[2] && newArea[1] <= oldArea[1] && newArea[3] >= oldArea[3]) { model.DataArea.RemoveAt(i); } } //Insert the new area model.DataArea.Add(dataArea); } } TaskManager.AddToBus(TaskManager.SHEET_DATA_AREA, model.DataArea); } //read header area from request if (headerArea != null) { TaskManager.AddToBus(TaskManager.SHEET_HEADER_AREA, headerArea); model.HeaderArea = headerArea; } string filePath = TaskManager.Bus[TaskManager.FILEPATH].ToString(); FileStream fis = null; //get worksheets try { //FileStream for the users file fis = new FileStream(filePath, FileMode.Open, FileAccess.Read); UploadUIHelper uploadUiHelper = new UploadUIHelper(fis); //Get the worksheet uris and save them to the model model.SheetUriDictionary = uploadUiHelper.GetWorksheetUris(); } catch (Exception ex) { LoggerFactory.LogCustom(ex.Message); } finally { if (fis != null) { fis.Close(); } } if (TaskManager.Bus.ContainsKey(TaskManager.ACTIVE_WOKSHEET_URI)) { worksheeturi = TaskManager.Bus[TaskManager.ACTIVE_WOKSHEET_URI].ToString(); } // STore in the excelfilereader info int[] areaDataValues = null; int[] areaHeaderValues = null; //load or create FILE_READER_INFO ExcelFileReaderInfo excelFileReaderInfo = new ExcelFileReaderInfo(); if (TaskManager.Bus.ContainsKey(TaskManager.FILE_READER_INFO)) { excelFileReaderInfo = (ExcelFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO]; } if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_DATA_AREA)) { List <string> selectedDataAreaJsonArray = (List <string>)TaskManager.Bus[TaskManager.SHEET_DATA_AREA]; List <int[]> areaDataValuesList = new List <int[]>(); foreach (string area in selectedDataAreaJsonArray) { areaDataValuesList.Add(JsonConvert.DeserializeObject <int[]>(area)); } if (areaDataValuesList != null && areaDataValuesList.Count > 0) { areaDataValues = areaDataValuesList[0]; if (areaDataValues != null) { excelFileReaderInfo.DataStartRow = areaDataValues[0] + 1; //End row is either at the end of the batch or the end of the marked area //DataEndRow = (currentBatchEndRow > areaDataValuesList[0][2] + 1) ? areaDataValues[2] + 1 : currentBatchEndRow, excelFileReaderInfo.DataEndRow = areaDataValues[2] + 1; //Column indices as marked in a previous step excelFileReaderInfo.DataStartColumn = areaDataValues[1] + 1; excelFileReaderInfo.DataEndColumn = areaDataValues[3] + 1; excelFileReaderInfo.Offset = areaDataValues[1]; } } } if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_HEADER_AREA)) { string selectedHeaderAreaJsonArray = TaskManager.Bus[TaskManager.SHEET_HEADER_AREA].ToString(); if (!string.IsNullOrEmpty(selectedHeaderAreaJsonArray)) { areaHeaderValues = JsonConvert.DeserializeObject <int[]>(selectedHeaderAreaJsonArray); if (areaHeaderValues != null) { //Header area as marked in a previous step excelFileReaderInfo.VariablesStartRow = areaHeaderValues[0] + 1; excelFileReaderInfo.VariablesStartColumn = areaHeaderValues[1] + 1; excelFileReaderInfo.VariablesEndRow = areaHeaderValues[2] + 1; excelFileReaderInfo.VariablesEndColumn = areaHeaderValues[3] + 1; } } } excelFileReaderInfo.Orientation = Orientation.columnwise; excelFileReaderInfo.WorksheetUri = worksheeturi; //reset if (string.IsNullOrEmpty(dataArea) && string.IsNullOrEmpty(headerArea)) { excelFileReaderInfo = new ExcelFileReaderInfo(); if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_HEADER_AREA)) { TaskManager.Bus.Remove(TaskManager.SHEET_HEADER_AREA); } if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_DATA_AREA)) { TaskManager.Bus.Remove(TaskManager.SHEET_DATA_AREA); } } TaskManager.AddToBus(TaskManager.FILE_READER_INFO, excelFileReaderInfo); Session["TaskManager"] = TaskManager; return(PartialView("_xlsFormularView", model)); }