private static bool IsTargetColumn( XlsSheet sheet, XlsRow commonColumnDefinition, string tableName) { return(commonColumnDefinition["ItemId"].ToInt() == 0 || sheet.Any(o => o["TableName"].ToString() == tableName && o["ItemId"].ToInt() > 0)); }
/// <summary> /// Основной метод чтения и компановки двнных с листа Excel /// </summary> /// <returns></returns> public TitleDrill PrepareLoadData(XlsSheet sheet) { const string tab3EndWord = "Среднее по ННС"; var startRowForTab4 = 0; var rows = sheet.Rows; _titleTab3Mapp = PrepareTab3DicMapping(new List <XlsRow> { rows[24], rows[26] }, 1, 11); _titleTab3Mapp.AddRange(PrepareTab3DicMapping(new List <XlsRow> { rows[24], rows[25] }, 11, 15)); var tableData1 = new CellsWorkOrder(); var tableData2 = new CellsWorkOrder(); var tableData3 = new CellsWorkOrder(); var tableData4 = new CellsWorkOrder(); var tableData1List = new List <CellWorkOrder>(); var tableData2List = new List <CellWorkOrder>(); var tableData3List = new List <CellWorkOrder>(); var tableData4List = new List <CellWorkOrder>(); //--Шапка листа for (var i = 8; i < 15; i++) { tableData1List.AddRange(GetTab1Data(rows[i])); } tableData1.Value = tableData1List.ToArray(); //---Ответственные специалисты по проекту tableData2List.AddRange(GetTab2Data(rows[17])); //По технико-технологическим показателям tableData2List.AddRange(GetTab2Data(rows[19])); //По экономическим показателям tableData2.Value = tableData2List.ToArray(); //---Тэхнико-экономические показатели строительства по проекту for (var i = 27; i < rows.Count; i++) { var sideVal = rows[i].Cells[1].Value?.ToString().Trim(); if (string.IsNullOrEmpty(sideVal) || sideVal.Equals(tab3EndWord, StringComparison.CurrentCultureIgnoreCase)) { startRowForTab4 = i; break; } tableData3List.AddRange(GetTable3Data(rows[i])); } tableData3.Value = tableData3List.ToArray(); //---Описание и особенности проекта tableData4List.AddRange(GetTab4Data(startRowForTab4, rows)); tableData4.Value = tableData4List.ToArray(); return(new TitleDrill { TableData1 = tableData1, TableData2 = tableData2, TableData3 = tableData3, TableData4 = tableData4 }); }
/// <summary> /// получить список имен листов excel для зугрузки данных /// </summary> /// <returns></returns> public List <string> GetSheetNamesForLoad(XlsSheet titleSheet, out List <string> someNames) { const string tabName = "тэхнико-экономические показатели строительства по проекту:"; const int firstRowShift = 5; const string colWellName = "B"; const string colWellVal = "M"; const string endRow = "Среднее по ННС"; var result = new List <string>(); someNames = new List <string>(); foreach (var row in titleSheet.Rows) { if (row.Cells.Count > 0 && !row.Cells[1].Value.ToString().Trim() .Equals(tabName, StringComparison.CurrentCultureIgnoreCase)) { continue; } var rowIdx = (int)row.Cells[0].Index - 1; //индекс элемента коллекции листов for (var i = rowIdx + firstRowShift; i < rowIdx + titleSheet.Rows.Count; i++) { var cellWellName = titleSheet.Rows[i].Cells.FirstOrDefault(w => w.ColumnName == colWellName); if (string.IsNullOrEmpty(cellWellName?.Value.ToString()) || cellWellName.Value.ToString().Trim() .Equals(endRow, StringComparison.CurrentCultureIgnoreCase)) { break; } var cellWellVal = titleSheet.Rows[i].Cells.FirstOrDefault(w => w.ColumnName == colWellVal); if (string.IsNullOrEmpty(cellWellVal?.Value.ToString())) { continue; } var nameSplit = cellWellName.Value.ToString().Trim().Split(' ').FirstOrDefault(); var name = cellWellName.Value.ToString().IndexOf("Первая", StringComparison.OrdinalIgnoreCase) != -1 ? "Перв. скв" : cellWellName.Value.ToString().IndexOf("Последняя", StringComparison.OrdinalIgnoreCase) != -1 ? "Посл. скв" : cellWellName.Value.ToString().Trim(); result.Add(name); someNames.Add(string.IsNullOrEmpty(nameSplit) ? name : nameSplit); } break; } return(result); }