|
Как определить иерархию в Экселе? | ☑ | ||
|---|---|---|---|---|
|
0
Domovoi
24.04.15
✎
09:47
|
Есть эксель файл в одной колонке указана номенклатура и группы. Сбоку от поля с ячейками есть группировки: на крестик нажал - группа раскрылась. Как считать с Эксельфайла эти группировки? Или как понять какая строка является группой и в какую строку включается?
|
|||
|
1
Stim
24.04.15
✎
09:49
|
посмотри здесь, я решал подобную проблему:
http://forum330.com/forum/1696/0 |
|||
|
2
Stim
24.04.15
✎
09:51
|
+ код.
В нем я загружаю с иерархического файла эксель данные в номенклатуру - с произвольным количеством иерархии(ограничено 10 уровнями вложенности) ИмяФайла = "C:\вет\1.xls"; Док = ПолучитьCOMОбъект(ИмяФайла); счСтрок = 2; Наим = Док.Sheets(1).Cells(счСтрок,1).Value; ТаблицаРодителей = Новый ТаблицаЗначений; ТаблицаРодителей.Колонки.Добавить("Ссылка"); //проинициализируем таблицу Текиндекс = 0; пока Текиндекс <> 10 цикл Строка = ТаблицаРодителей.Вставить(Текиндекс); Строка.Ссылка = Справочники.Номенклатура.ПустаяСсылка(); Текиндекс = Текиндекс + 1; КонецЦикла; ЭтоЭлемент = ЛОЖЬ; Пока ЗначениеЗаполнено(Наим) Цикл Наименование = Док.Sheets(1).Cells(счСтрок,1).Value; Код = Док.Sheets(1).Cells(счСтрок,2).Value; //..пр реквизиты ЕдиницаДляОтчетов= Док.Sheets(1).Cells(счСтрок,8).Value; Уровень = Док.Sheets(1).Cells(счСтрок,1).IndentLevel ; Уровень = Уровень + 2;//потому что начинается уровень с 0, а нулевой у нас это корень ЭтоЭлемент = ЗначениеЗаполнено(ЕдиницаДляОтчетов) ; // все уровни - четные, группы идут по убывающей в разрезе иерархии //поэтому алгоритм такой: //если это группа - создаем, родителя получаем из таблицы по индекс-2 //записываем или перезаписываем группу в таблицу со своим индексом //если элемент - создаем, родителя получаем из таблицы по индекс-2 Родитель = ТаблицаРодителей.Получить(уровень-2).ссылка; Если ЭтоЭлемент Тогда //создаем элемент Иначе //создаем группу Строка = ТаблицаРодителей.Получить(Уровень); Строка.Ссылка = Группа.Ссылка; КОнецЕсли; счСтрок = счСтрок +1; Наим = Док.Sheets(1).Cells(счСтрок,1).Value; КОнецЦикла; |
|||
|
3
Domovoi
24.04.15
✎
09:51
|
Спасибо
|
| Форум | Правила | Описание | Секции | Поиск |