Алгоритм создания древовидной структуры с использованием таблицы Excel

Я столкнулся с проблемой при создании древовидной структуры с использованием следующей таблицы Excel.

введите описание изображения здесь

Я хотел сохранить эти элементы ячейки как категории. Есть много-много отношений между каждой категорией. Это означает, что каждая родительская категория имеет много дочерних категорий, а также каждая дочерняя категория имеет много родительских категорий.

введите описание изображения здесь

Я собираюсь использовать PHP как язык, но это не важно.

Если есть кто-то, кто имел подобный опыт или какую-либо идею обходить и хранить категории в виде дерева (отношения родитель-потомок), это будет очень полезно для меня.

// ============== Update ===================

Количество столбцов может быть разным. Это означает, что существует множество файлов Excel, и количество их заголовков и имя заголовка могут отличаться. Поэтому мне нужно найти общее решение для всех листов.

Благодарю.

0

Решение

Начните с создания полностью заполненной таблицы, например:

введите описание изображения здесь

Затем выберите ячейку A2 и применить Условное форматирование сделать ячейку «невидимой», если она имеет то же значение, что и ячейка выше:

введите описание изображения здесь

и копировать они форматируют как вниз, так и поперек.

введите описание изображения здесь

Теперь у вас есть нужный визуальный эффект, и вы можете обрабатывать таблицу стандартными функциями Excel.

0

Другие решения

Я решил проблему.

  1. При переборе элементов ячейки в первой строке рассчитайте количество
    колонны.
  2. Динамически создавайте переменные для каждого столбца, используя количество столбцов. Это только для первого ряда листа.

    if($row->getRowIndex()==1){
    //Create category variables
    for($cat_var_count =1; $cat_var_count < $i; $cat_var_count++){
    ${$category_header."_".$cat_var_count} = "";
    }
    }
    
  3. Сохраните данные каждой ячейки в соответствующей переменной

    $ {$ category_header. «_». $ i} = $ last_inserted_row_category_id;

  4. Проверьте, пустые данные ячейки или нет

  5. Добавить элементы данных в таблицу категорий
  6. Обновляйте релевантную переменную только для каждого столбца, если он не пустой
  7. Получить данные родительской переменной, уменьшив номер элемента текущей ячейки на единицу. Это предыдущие данные ячейки. Не обновляйте соответствующую переменную, если данные столбца пусты.

    $model_cat_parent->parent_id = ${$category_header."_".($i-1)};
    $model_cat_parent->child_id = $last_inserted_row_category_id;
    
0

По вопросам рекламы [email protected]