protected SheetItem GetSheetItem(OpenXmlElement source, IEnumerable <string> nameCells, int nameIndex, int dataStartIndex, int step) { var cells = GetCellFromRow(source, 0).ToArray(); var name = GeneralParsing.GetCellValue(WorkbookPart, cells.Skip(nameIndex).First()); var data = nameCells.Select( (x, i) => new { Name = x, Data = cells.Skip(dataStartIndex) .Where((y, j) => j % step == i) .Select(z => GeneralParsing.GetCellValue(WorkbookPart, z)) .ToArray() }).ToDictionary(dataKey => dataKey.Name, dataCheck => dataCheck.Data); var item = new SheetItem { Name = name, Data = data }; return(item); }
private static PlanSheetItem GetDataRow(IReadOnlyList <Cell> cells, SpreadsheetDocument document, ICollection <int> years, ICollection <int> monthes) { var planItem = new PlanSheetItem { Subject = GeneralParsing.GetCellValue(document.WorkbookPart, cells[4]), TimelineData = GetData(cells, document, 17, years, monthes) }; return(planItem); }
private static ICollection <int> ParseYears(IEnumerable <Cell> cells, SpreadsheetDocument document, int startIndex) { var cellsData = cells.Skip(startIndex).Select(x => GeneralParsing.GetCellValue(document.WorkbookPart, x)).ToArray(); var knownCell = cellsData[0]; for (var i = 1; i < cellsData.Length; i++) { if (cellsData[i].IsNullOrEmpty()) { cellsData[i] = knownCell; } else { knownCell = cellsData[i]; } } return(cellsData.Select(int.Parse).ToArray()); }
private static ICollection <PlanTimelineData> GetData(IReadOnlyList <Cell> cells, SpreadsheetDocument document, int startIndex, ICollection <int> years, ICollection <int> monthes) { var list = new List <PlanTimelineData>(); for (var j = startIndex; j <= cells.Count - 3; j = j + 3) { var timeLine = new PlanTimelineData { Year = years.ElementAt(j - startIndex), Month = monthes.ElementAt(j - startIndex), Plan = GeneralParsing.GetCellValue(document.WorkbookPart, cells[j]), AccumulatedPlan = GeneralParsing.GetCellValue(document.WorkbookPart, cells[j + 1]), SupervisorComments = GeneralParsing.GetCellValue(document.WorkbookPart, cells[j + 2]) }; list.Add(timeLine); } return(list); }
private IEnumerable <int> GetMonthInts(IEnumerable <Cell> cells) { var cellsData = cells.Skip(DataStartIndex).Select(x => GeneralParsing.GetCellValue(WorkbookPart, x)).ToArray(); var knownCell = cellsData[0]; for (var i = 1; i < cellsData.Length; i++) { if (cellsData[i].IsNullOrEmpty()) { cellsData[i] = knownCell; } else { knownCell = cellsData[i]; } } return(cellsData.Select(int.Parse).ToArray()); }
protected ICollection <int> ParseYears(IEnumerable <Row> rows) { var cellsData = GetYearCells(rows) .Skip(DataStartIndex) .Select(x => GeneralParsing.GetCellValue(WorkbookPart, x)) .ToArray(); var knownCell = cellsData[0]; for (var i = 1; i < cellsData.Length; i++) { if (cellsData[i].IsNullOrEmpty()) { cellsData[i] = knownCell; } else { knownCell = cellsData[i]; } } return(cellsData.Select(x => DateTime.FromOADate(int.Parse(x)).Year).Where((x, i) => (i % Step) == 0).ToArray()); }
protected IEnumerable <SheetItem> GetElements(ICollection <Row> rows) { var nameCells = GetCellsFrom(rows, DataStartIndex, TitlesIndex).Take(Step).Select(x => GeneralParsing.GetCellValue(WorkbookPart, x)).ToArray(); var elements = new List <SheetItem>(); foreach (var source in rows.Skip(ItemStartIndex)) { elements.Add(GetSheetItem(source, nameCells, NameIndex, DataStartIndex, Step)); } return(elements); }