• C# 根据Excel生成树


    需求:

      根据Excel生成树,Excel的某些节点为属性节点,

      如: 列(桩号、构件编码、测试属性1) 是列(分项工程名称) 的属性,非节点。

      列(桩号、构件编码、测试属性1) 以属性的方式存在

    导入的思路:

      排除属性列外,所有的列从左到右,树的层级依次递增,左边列是右边列的父节点

      判断一个单元格是否已添加,获取该单元格的所有父节点的名称,拼接成字符串。

        如:鸡鸣隧道  的全名就是  城开高速公路,B2合同段,鸡鸣隧道

    效率的优化:

        

      1、导入第二行(或后面行)的时候,判断和第一行是否有相同的节点,有就跳过相同节点,从不同的节点处开始导入。

       2、在效率低下的方法处 加上缓存

       3、导入A1合同段,就只加载A1合同段,这颗树的全部节点

    树的一二级节点固定的

    树的类:

        public class tb_Projects
        {
           
            public int ProID { get; set; }        
            public string ProjectName { get; set; }
            /// <summary>
            /// 编码
            /// </summary>
            public string ProjectCode { get; set; }
           
    
            public int ParentId { get; set; }
            public int? NextId { get; set; }
            public int? ProjectOrder { get; set; }
    
            public int IsEnabled { get; set; }
            /// <summary>
            /// 业主单位id
            /// </summary>
            public int? OwnerId { get; set; }
            /// <summary>
            /// 施工单位ID
            /// </summary>
            public int? ConstructionId { get; set; }
            /// <summary>
            /// 监理单位id
            /// </summary>
            public int? SupervisionId { get; set; }
            /// <summary>
            /// 承包单位id
            /// </summary>
            public int? ContractId { get; set; }
    
            /// <summary>
            /// 第几级(即在树层次中第几级,根元素级次为1,以此类推)
            /// </summary>
            public int? Level { get; set; }
            /// <summary>
            /// 数量
            /// </summary>
            public int? Quantity { get; set; }
    
    
            public int VersionIng { get; set; }
    
            /// <summary>
            /// 里程桩号
            /// </summary>
            public string MileageNo { get; set; }
            /// <summary>
            /// 标准编码
            /// </summary>
            public string ComponentCode { get; set; }
    
            /// <summary>
            /// 内部编码
            /// </summary>
            public string NComponentCode { get; set; }
    
            /// <summary>
            /// 流程状态
            /// </summary>
            public int TaskStatus { get; set; }
    
            
    
            public string FbxId { get; set; }
            /// <summary>
            /// 判断是否为单位工程
            /// </summary>
            public int IsSubunit { get; set; }
            /// <summary>
            /// 所属标段
            /// </summary>
            public string BiDSion { get; set; }
        }
    View Code

    Excel格式:

    生成的树:

    数据库:

  • 相关阅读:
    【c语言】斐波那契数列
    【c语言】c语言中的问题--empty character constant
    【java 基础领域】类加载机制
    【书籍学习】汇编语言学习-第二章
    【专接本课程】c语言指针学习
    Balanced Binary Tree
    Symmetric Tree
    Same Tree
    Recover Binary Search Tree
    Binary Tree Zigzag Level Traversal
  • 原文地址:https://www.cnblogs.com/guxingy/p/10103547.html
Copyright © 2020-2023  润新知