首页 > 编程语言 >C# .netcore NPOI库 实现报表的列自适应删减

C# .netcore NPOI库 实现报表的列自适应删减

时间:2024-09-11 19:02:09浏览次数:10  
标签:报表 netcore C# 标签 数据库 删减 表中 列名 统计

实际需求:业务上的一个需求,数据库表A中的B字段存放的是该条数据的一些标签,标签存在两级【即一级标签和二级标签】, 现在要是实现将这些标签统计到报表中,一级标签作为表头,二级标签作为填充值。
由于之前的报表每增加一个列都需要去数据库表中增加这个字段名称,然后代码中写统计逻辑,这样才能实现, 这样做的好处是只需要后端就可以完成报表的一个字段的增加,不需要等待前端去增加这了列名了, 后来的低代码就是这样的逻辑,可以简单的编写sql,去实现统计逻辑。实现快速开发,节省开发时间。
回归正题,由于每个数据的标签是不确定的,那就导致了每个每个数据要统计的列是不一样的,这里的做法是将全部的标签都进行增加统计【用户不需要的话还有个功能取消掉某列的统计就可以了】,当用户新增一个标签的时候,只要去查看报表,检测到这个标签的名称不在列统计当中,就会自动的去新增一条列统计字段,每条数据循环的时候要将给其赋值,有对应的二级标签那就展示二级标签名称,没有的话那也要新增一个列,但是数据填写空字符串。【这一步主要是防止在下载报表的时候报错,以防列数对应不上而报错】。
有两个核心的点,第一个:统计的列名为什么还要在数据库表中再存一份? 其实也可以将要统计的列名放入代码中写死,同样可以实现报表数据的展示,但是所有的客户都会展示这么多的列统计,没有办法支持各个客户对统计列的筛选【这个就是原因】。
第二个:代码中的列数据如何和数据库表中的列名对应上的? 数据库表中存入统计列的列中文名和列英文名, 在代码中一个字段的定义肯定是英文的,这样就可以知道如何赋值了,【列中文名是给客户展示的】,其中 。。。 有时间再继续

标签:报表,netcore,C#,标签,数据库,删减,表中,列名,统计
From: https://www.cnblogs.com/lb0783/p/18408756

相关文章

  • Linux网络——socket编程与UDP实现服务器与客户机通信
    文章目录端口号TCP/UDP网络字节序socket的常见APIUDP实现服务器与客户机通信服务器客户机运行效果如下端口号我们说即便是计算机网络,他们之间的通信也仍然是进程间通信那么要如何在这么多计算机中,找到你想要的那个进程呢在网络中标识的唯一的计算机使用的是ip地......
  • C++ 虚析构函数简单测试
    classBase{public:virtual~Base(){cout<<"~Base"<<'\n';}};classDerived:publicBase{public:~Derived(){cout<<"~Derived"<<'\n';}};intmain(){{......
  • 从混乱到高效:彬匠科技助力深圳3C大卖企业跨境电商转型成功
    3C大卖在3C电子配件、耳机和音响领域,该知名企业(以下简称“客户”)已在佛山和浦江自营多个仓库,年营收突破10亿。然而,随着业务规模的迅速扩大,客户在选品开发、库存管理和成本核算等方面面临诸多挑战。为了解决这些问题,客户选择了彬匠科技的全套业财一体化管理系统。客户说“彬匠科技的......
  • 遗传与进化计算会议(Genetic and Evolutionary Computation Conference,简称GECCO)多目标
    遗传与进化计算会议(GeneticandEvolutionaryComputationConference,简称GECCO)是进化计算领域内最大的同行评审会议,也是计算机学会(ACM)遗传与进化计算特别兴趣小组(SIGEVO)的主要会议。它涵盖了遗传算法、遗传编程、蚁群优化和群体智能、复杂系统、进化组合优化和元启发式、进......
  • 双人3D坦克(unity+C#)
        //TankManager.csusingSystem;usingUnityEngine;[Serializable]publicclassTankManager{publicColorm_PlayerColor;publicTransformm_SpawnPoint;[HideInInspector]publicintm_PlayerNumber;......
  • LeetCode 977.有序数组的平方 (java)
    给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100],排序后,数组变为[0,1,9,16,100]示例2:输入:nums=[-7,-3,2,3,11]输出:[4,9,9,......
  • LeetCode 704.二分查找 (java)
    给定一个 n 个元素有序的(升序)整型数组 nums和一个目标值 target ,写一个函数搜索 nums 中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例 2:......
  • CompletableFuture 详解
    CompletableFuture提供了丰富的方法来异步处理任务。CompletableFuture.runAsync 用于执行没有返回值的任务,常用于不需要返回结果的业务voidpublicstaticCompletableFuture<Void>runAsync(Runnablerunnable){returnasyncRunStage(asyncPool,runnable);......
  • The 3rd Universal Cup. Stage 8: Cangqian
    C.ChallengeNPC考虑构造一个二分图,左边是\(1,3,5,7\)右侧是\(2,4,6,8\)。最优解肯定是一边全1,一边全2。如果\(1,2\)之间不连边,这\(2\)就会被染色为1,因此只要让\(2,3\)连边,\(3\)会被染色为\(2\),然后\(1,4\)连边,\(4\)也会被染色为\(5\),这时只要让\(2,5\)和\(4,5\)连边,\(5\)就......
  • Codeforces Round 933 (Div. 3) (C-G)
    这场比赛由于急躁心态不稳导致abc三题接连wa,这时候心态几乎爆炸。而d题思路其实很清晰,但是因为set使用不熟练卡住。最后没用set十分钟就写完过了。这时候只剩下十多分钟来不及写别的了。结束收获主要就是:还是要注意边界的细节(ab题就不放了。。C-RudolfandtheUglyString......