示例#1
0
        public List <TreeViewElements> GetSample()
        {
            var numberOfRows    = sheet.Dimension.End.Row;
            var Cells           = sheet.Cells;
            var _SampleTreeView = new List <TreeViewElements>();

            for (var rowIterator = 2; rowIterator <= numberOfRows; rowIterator++)
            {
                var e = new TreeViewElements()
                {
                    ID        = Cells[rowIterator, 1].Value.ToString(),
                    Parent_ID = Cells[rowIterator, 2].Value.ToString(),
                    Name      = Cells[rowIterator, 3].Value.ToString(),
                    CID       = Convert.ToInt32(Cells[rowIterator, 4].Value),
                };
                _SampleTreeView.Add(e);
            }
            return(_SampleTreeView);
        }
示例#2
0
        public List <TreeViewElements> GetSample()
        {
            var        sheets          = pack.Workbook.Worksheets;
            var        dataSheet       = sheets.First();
            var        numberOfRows    = dataSheet.Dimension.End.Row;
            var        numberOfCols    = dataSheet.Dimension.End.Column;
            ExcelRange Cells           = dataSheet.Cells;
            var        _SampleTreeView = new List <TreeViewElements>();

            for (int rowIterator = 2; rowIterator <= numberOfRows; rowIterator++)
            {
                var e = new TreeViewElements()
                {
                    ID        = Cells[rowIterator, 1].Value.ToString(),
                    Parent_ID = Cells[rowIterator, 2].Value.ToString(),
                    Name      = Cells[rowIterator, 3].Value.ToString(),
                    CID       = Convert.ToInt32(Cells[rowIterator, 4].Value),
                };
                _SampleTreeView.Add(e);
            }
            return(_SampleTreeView);
        }
示例#3
0
        public List <TreeViewElements> GetNew()
        {
            var        sheets       = pack.Workbook.Worksheets;
            var        dataSheet    = sheets.First();
            var        numberOfRows = dataSheet.Dimension.End.Row;
            var        numberOfCols = dataSheet.Dimension.End.Column;
            ExcelRange Cells        = dataSheet.Cells;

            // Сортировка данных таблицы, чтобы в дереве все значения были отсортированы
            Cells["A2:J"].Sort(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, new bool[] { false, false, false, false, false, false, false, false, false, false });
            var _TreeViewNew = new List <TreeViewElements>();
            int count        = 1; // Уникальный индекс (обычный счетчик-инкремент)

            /* newListElem - для хранения строки таблицы, чтобы потом можно было получить Parent_ID
             * Parent_ID для текущего значения - всегда ID предыдущего значения
             * вид - |значение_первого_столбика|значение второго_столбика|значение_третьего_столбика и так далее (для каждого уровня вложенности)
             * разделитель типа - " | " используется, чтобы можно было легко распарсить строку (отделить значени одного столбца от другого)
             */
            var newListElem = new Dictionary <string, string>();

            // Заполняем нулевые узлы дерева (у которых нет родителя) и запоминаем их в newListElem
            for (int rowIterator = 2; rowIterator <= numberOfRows; rowIterator++)
            {
                if (!_TreeViewNew.Exists(x => x.Name == Cells[rowIterator, 1].Value.ToString()))
                {
                    var e = new TreeViewElements()
                    {
                        ID        = count.ToString(),
                        Parent_ID = "0",
                        Name      = Cells[rowIterator, 1].Value.ToString(),
                        CID       = -2,
                    };
                    _TreeViewNew.Add(e);
                    newListElem.Add("|" + Cells[rowIterator, 1].Value.ToString(), e.ID);
                    count++;
                }
            }

            // Присваиваем всем значениям ID, которые находятся на одном уровне вложенности, по столбцам
            // не трогаем последний столбец, т.к. CID у предпоследних элементов строк отличается от других
            for (int colIterator = 2; colIterator < numberOfCols - 1; colIterator++)
            {
                for (int rowIterator = 2; rowIterator <= numberOfRows; rowIterator++)
                {
                    // Переменная - строка для хранения промежуточных данных, которые потом запишутся в newListElem
                    var tempElem = "";
                    for (int j = 1; j <= colIterator; j++)
                    {
                        tempElem += "|" + Cells[rowIterator, j].Value.ToString();
                    }
                    if (!newListElem.ContainsKey(tempElem))
                    {
                        var e = new TreeViewElements()
                        {
                            ID        = count.ToString(),
                            Parent_ID = newListElem[tempElem.Remove(tempElem.LastIndexOf("|"), tempElem.Length - tempElem.LastIndexOf("|"))],
                            Name      = Cells[rowIterator, colIterator].Value.ToString(),
                            CID       = -2,
                        };
                        _TreeViewNew.Add(e);
                        newListElem.Add(tempElem, e.ID);
                        count++;
                    }
                }
            }

            // Обходим последний столбец, чтобы значения CID записать в структуру последнего узла дерева
            for (int rowIterator = 2; rowIterator <= numberOfRows; rowIterator++)
            {
                // из переменной - строки получим Parent_ID для записи CID
                var tempElem = "";
                for (int j = 1; j <= numberOfCols - 2; j++)
                {
                    tempElem += "|" + Cells[rowIterator, j].Value.ToString();
                }

                var e = new TreeViewElements()
                {
                    ID        = count.ToString(),
                    Parent_ID = newListElem[tempElem],
                    Name      = Cells[rowIterator, numberOfCols - 1].Value.ToString(),
                    CID       = Convert.ToInt32(Cells[rowIterator, numberOfCols].Value),
                };
                _TreeViewNew.Add(e);
                count++;
            }
            return(_TreeViewNew);
        }