• 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# PHP JSP 编程
    【算法导论】贪心算法,递归算法,动态规划算法总结
    cocoa2dx tiled map添加tile翻转功能
    8月30日上海ORACLE大会演讲PPT下载
    【算法导论】双调欧几里得旅行商问题
    Codeforces Round #501 (Div. 3) B. Obtaining the String (思维,字符串)
    Codeforces Round #498 (Div. 3) D. Two Strings Swaps (思维)
    Educational Codeforces Round 89 (Rated for Div. 2) B. Shuffle (数学,区间)
    洛谷 P1379 八数码难题 (BFS)
    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords (贪心)
  • 原文地址:https://www.cnblogs.com/guxingy/p/10103547.html
Copyright © 2020-2023  润新知