public DataTuple[] ReadFile(Stream file, string fileName, EasyUploadFileReaderInfo fri, long datasetId, String worksheetUri) { this.FileStream = file; this.FileName = fileName; this.Info = fri; this.DatasetId = datasetId; // Check params if (this.FileStream == null) { this.ErrorMessages.Add(new Error(ErrorType.Other, "File not exist")); } if (!this.FileStream.CanRead) { this.ErrorMessages.Add(new Error(ErrorType.Other, "File is not readable")); } if (fri.VariablesStartRow <= 0) { this.ErrorMessages.Add(new Error(ErrorType.Other, "Startrow of Variable can´t be 0")); } if (fri.DataStartRow <= 0) { this.ErrorMessages.Add(new Error(ErrorType.Other, "Startrow of Data can´t be 0")); } if (this.ErrorMessages.Count == 0) { // open excel file spreadsheetDocument = SpreadsheetDocument.Open(this.FileStream, false); // get workbookpart WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; //SheetDimension dimension = workbookPart.WorksheetParts.First().Worksheet.GetFirstChild<SheetDimension>(); // get all the defined area //List<DefinedNameVal> namesTable = BuildDefinedNamesTable(workbookPart); /* * Markus: Fixed it for column names greater than Z - leaving the old code commented out in case something goes wrong * */ //this._areaOfVariables.StartColumn = alphabet[fri.VariablesStartColumn - 1].ToString(); this._areaOfVariables.StartColumn = columnToLetter(fri.VariablesStartColumn); //this._areaOfVariables.EndColumn = alphabet[fri.VariablesEndColumn - 1].ToString(); this._areaOfVariables.EndColumn = columnToLetter(fri.VariablesEndColumn); this._areaOfVariables.StartRow = fri.VariablesStartRow; this._areaOfVariables.EndRow = fri.VariablesEndRow; //this._areaOfData.StartColumn = alphabet[fri.DataStartColumn - 1].ToString(); this._areaOfData.StartColumn = columnToLetter(fri.DataStartColumn); //this._areaOfData.EndColumn = alphabet[fri.DataEndColumn - 1].ToString(); this._areaOfData.EndColumn = columnToLetter(fri.DataEndColumn); this._areaOfData.StartRow = fri.DataStartRow; this._areaOfData.EndRow = fri.DataEndRow; // Get intergers for reading data startColumn = fri.VariablesStartColumn; endColumn = fri.VariablesEndColumn; numOfColumns = (endColumn - startColumn) + 1; offset = this.Info.Offset; int endRowData = fri.DataEndRow; // select worksheetpart by Uri WorksheetPart worksheetPart = workbookPart.WorksheetParts.Where(ws => ws.Uri.ToString() == worksheetUri).FirstOrDefault(); // get styleSheet _stylesheet = workbookPart.WorkbookStylesPart.Stylesheet; // Get shared strings _sharedStrings = workbookPart.SharedStringTablePart.SharedStringTable.Elements <SharedStringItem>().ToArray(); if (ValidateDatastructure(worksheetPart, this._areaOfVariables.StartRow, this._areaOfVariables.EndRow)) { ReadRows(worksheetPart, fri.DataStartRow, endRowData); } return(this.DataTuples.ToArray()); } return(this.DataTuples.ToArray()); }
public EasyUploadExcelReader(StructuredDataStructure structuredDatastructure, EasyUploadFileReaderInfo fileReaderInfo) : base(structuredDatastructure, fileReaderInfo) { }