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));
 }
Exemplo n.º 2
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
            });
        }
Exemplo n.º 3
0
        /// <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);
        }