【问题标题】:Algorithm to create a tree structure using excel sheet使用Excel工作表创建树结构的算法
【发布时间】:2015-08-22 16:44:51
【问题描述】:

我在使用以下 excel 表创建树结构时遇到了问题。

我想将这些单元格元素存储为类别。每个类别之间存在多对多的关系。这意味着每个父类别都有许多子类别,每个子类别也有许多父类别。

我将使用 PHP 作为语言,但这并不重要。

如果有人有这种经验或任何想法将类别遍历和存储为树(父子关系),这对我很有帮助。

//==============更新====================

列数可能不同。这意味着有许多 excel 文件,它们的标题计数和标题名称可能不同。因此,我需要为所有工作表找到通用解决方案。

谢谢。

【问题讨论】:

  • 现在还不清楚你的问题是什么。仅仅要求一般提示太宽泛了。请澄清一下。
  • 从截图中不清楚为什么描述说每个孩子有很多父母,看起来每个孩子(树)只有一个父母。你能解释一下吗?
  • @user3964075 用于共享目的。请暂时忽略。我们现在可以说这是一对多的关系。
  • @Mate juhasz 在遍历类别(单元格数据)时我无法识别父子节点。当一个父母有很多孩子时,它就很复杂了。

标签: php algorithm tree tree-traversal


【解决方案1】:

我已经解决了这个问题。

  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;
    

【讨论】:

    【解决方案2】:

    首先创建完全填充的表,例如:

    然后选择单元格 A2 并应用 条件格式 以使单元格“不可见”,如果它与上面的单元格具有相同的值:

    并复制它们的格式。

    您现在拥有所需的视觉效果,并且可以使用标准 Excel 函数处理表格。

    【讨论】:

    • 非常感谢您的支持。我正在寻找一种将 excel 表作为树遍历的算法。
    • @cha 它一棵树的表示。对于每个终端节点,它定义了节点parent、grandparent
    • 是的。但我希望它们填充到数据库中。问题是遍历数据并将它们填充为父子类别。
    • @cha Access 对你来说可能是一个更好的工具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多