Чтение иерархического файла Excel #642265


#0 by Oz11
здравствуйте. есть задача прочитать иерархический файл excel. читать собираюсь в дерево значений, чтобы потом удобно создавать элементы в справочнике. не могу определить алгоритм считывания данных. как из екселя выудить информацию что текущая строка принадлежит определенному родителю?
#1 by Wobland
а там родители есть вообще?
#2 by Wobland
записать макрос со свёрткой строк и посмотреть?
#3 by Oz11
читаю очередную строку из файла и среди реквизитов строки СОМобъекта не нахожу ничего похожего ни на родителя, ни на даже уровень этой строки в дереве. ПС. с макросами не дружу.
#4 by Wobland
сдаётся мне, оно не знает, что к чему
#5 by Oz11
наверное это должно было мне как-то помочь.
#6 by Wobland
понял, как над макросами медитировать? ;)
#7 by Oz11
да. спасибо. очень полезная штука. но вот не дошло все равно как определить родителя текущей строки? (если структура хранит все именно так)
#8 by Wobland
да я не знаю. скажи, что такое родитель с точки зрения екселя?
#9 by Oz11
вот что я нашел: ActiveSheet.Rows(ActiveCell.Row).OutlineLevel показывает текущий уровень строки в структуре сгруппированных строк. теперь осталось обрисовать алгоритм как лучше хранить ссылку на текущего родителя в дереве, чтобы последовательно разворачивать дерево по мере считывания данных из файла.
#10 by Wobland
вот можешь же ;)
#11 by Oz11
кому может быть полезно - вот код: ДеревоЗагрузки - переменная типа дерево значений с определенными колонками, СтруктураРодителей - переменная типа Структура, хранящая текущего родителя каждого уровня при прохождении текущей строки
#12 by Wobland
на всякий случай    ПоследняяСтрока=Sheet.Cells.SpecialCells.Row;
#13 by Oz11
проверил. действительно последняя строка дерева не заполняется подчиненными строками.
#14 by Oz11
походу все дело в том что берутся активные строки листа ActiveCell  = Excel.ActiveCell.SpecialCells(xlLastCell);, по умолчанию группировки свернуты в екселе и выходит что последняя группировка не раскрыта. думаю из-за этого код, приведенный выше, определяет не все вложенные строки. возникает еще один вопрос. как взять в листа не активные строки, а все (и те что скрыты)?
#15 by Oz11
исправляем :
#16 by GrGuest
И от меня спасибо!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям