CN109614408B - 基于spring和poi的web端自定义报表的实现方法 - Google Patents
基于spring和poi的web端自定义报表的实现方法 Download PDFInfo
- Publication number
- CN109614408B CN109614408B CN201811252670.7A CN201811252670A CN109614408B CN 109614408 B CN109614408 B CN 109614408B CN 201811252670 A CN201811252670 A CN 201811252670A CN 109614408 B CN109614408 B CN 109614408B
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- main table
- column
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于spring和poi的web端自定义报表的实现方法,包括以下步骤:步骤1,接收查询条件参数p和模板参数m的指令;步骤2,确定模板信息M;步骤3,形成查询条件数据集P;步骤4,获取所述模板信息M定义的每个主表和需要查询的主表内容MC,以及各主表间的逻辑关联键的数据集J;步骤5,通过所述主表内容MC和系统预定义结构数据WD生成数据集Dx;步骤6,生成完整的查询数据语句;步骤7,将数据集Rx和excel数据列对应;步骤8,判断是否存在未查询的主表数据,若存在返回步骤5;步骤9,形成报表的数据R;步骤10,将每列的样式信息与列标题对应,存入数据集S;步骤11,最终得到excel文件对象WB。
Description
技术领域
本发明涉及web后端和公交系统智能办公领域,具体涉及一种基于spring和poi的web端自定义报表的实现方法。
背景技术
随着城市交通的发展和绿色出行的提倡,选择公共出行方式出行的客流量不断增多,各种有关客流、线路、站点、车辆的交通大数据进入到各种调度系统或客流系统,造成了数据分析的工作量不断加大,而数据分析精度要求和简洁度要求越来越高,因此业务报表的精准简洁的实现成为了目前一项重要的工作。
目前报表的实现方法大多还是依赖专业运维人员手工统计数据报表,这需要运维人员精通数据库语言,通过数据库拉取数据后再制作成excel表格,这需要大量的人工成本和时间成本,同时效率低下。专利[CN201110460495.2]中提出的web智能报表提供了集成在web端的报表功能,在客户端生成查询内容,安全性差;专利[CN201110054783.8]提出的web高性能智能报表的实现只能在浏览器页面上展示,无法生成excel格式的文件,对于excel文件内部的格式样式也就无法实现自定义;专利[CN02102982.2]提出的报表的实现方法,将整个自定义报表形成一个单独的系统供用户使用,无法简单集成到web业务系统上。
发明内容
为了克服现有技术的不足,本发明的目的在于提供一种基于spring和poi的web端自定义报表的实现方法,该方法实现了快速自动获取精准简洁的自定义报表,安全性好,精准简洁的业务报表有效的反应公交业务中资源调配客流分流工作的效果,为公交系统真正实现“降本增效”。
为达到上述目的,本发明是通过以下的技术方案来实现的。
一种基于spring和poi的web端自定义报表的实现方法,其特征在于,包含以下步骤:
步骤1,报表生成装置接收查询条件参数p和模板参数m的指令,所述查询条件参数p为数据查询的限制条件,所述模板参数m为预定义报表样式的唯一标识编号;
步骤2,确定查询所述模板参数m对应的模板信息M,所述模板信息M包括要查询的内容、预定义的查询条件,以及要查询的样式格式;
步骤3,把所述查询条件参数p与所述模板信息M中的预定义的查询条件做匹配关联,形成查询条件数据集P;
步骤4,根据所述模板信息M中要查询的内容获取所述模板信息M定义的每个主表和需要查询的主表内容MC,以及各主表间的逻辑关联键的数据集J;
步骤5,依次获取每个主表的主表内容MC,通过所述主表内容MC和系统预定义结构数据WD生成数据集Dx,
所述数据集Dx包含:所述主表内容MC需要查询的实际字段名和表名称,所述主表内容MC的计算方式、查询顺序、分类方式和优先级,和所述实际字段名和表名称关联查询的表名和关联键,
所述系统预定义结构数据WD为预定义的整个系统所有业务数据表的结构、类型、描述、关联信息;
步骤6,结合数据集Dx和查询条件数据集P生成完整的查询数据语句,并执行该语句获得查询结果,并将查询结果存入数据集Rx中,所述数据集Rx表示第χ个主表的数据;
步骤7,通过所述模板信息M和数据集Dx将数据集Rx和excel数据列对应;
步骤8,判断是否存在未查询的主表数据,若存在返回步骤5;
步骤9,得到所有主表的数据后,根据数据集J将数据集R1至Rn关联,形成报表的数据R,其中n为主表数量;
步骤10,根据所述模板信息M获取excel报表内容样式信息,并将每列的样式信息与列标题对应,存入数据集S;
步骤11,将表示样式的所述数据集S与表示真实数据的所述数据集R建立对应关系,并设置到excel文件中,最终得到excel文件对象WB;
优选的所述查询条件数据集P还包括:根据用户类型的系统权限生成的数据权限的查询条件。
优选的,所述步骤10中还包括如下步骤:根据所述模板信息M获取对应模板的表头样式信息,将所述表头样式信息存入数据结构H,并将所述数据结构H设置到excel文件中;进一步的,所述表头样式信息包含表头的相对宽度和表头样式、表头的实际宽度。
优选的,所述步骤11具体包括:
获取所述模板信息M中样式扩展方式为数据设置扩展,根据所述数据设置扩展为横向或纵向,对整列或整行按默认样式按列进行渲染;判断该列或行是否有条件样式,若有条件样式,则渲染每个符合条件的单元格样式,若条件样式的扩展方式为横向或纵向扩展,则对整行或整列的单元格均设置条件样式;所述excel文件中每个单元格的宽度都会根据内容进行宽度自适应,每列宽度取该列所有单元格中最长的宽度。
优选的,还包括步骤12,将excel文件WB以http文件流的形式输出至浏览器弹窗。
与现有技术相比,本发明具有如下有益效果:
(1)真正实现用户点击查询即可获得所需结果,不需要用户手动配置技术细节,实现自动生成,为公交系统实现“降本增效”;
(2)轻量级集成至web系统中,对于其他相关业务系统的自定义报表均可很好的支持;
(3)安全性好。
附图说明
图1为本发明的基于spring和poi的web端自定义报表的实现方法的流程图。
具体实施方式
为了阐明本发明的技术方案和工作原理,下面结合附图与具体实施例对本发明做详细的介绍,目的是使得本领域的技术人员对本发明的构思、技术方案有更完整、准确和深入的理解。
实施例一:
附图1为本发明的基于spring和poi的web端自定义报表的实现方法的流程图,结合该图,该方法主要包括以下步骤:
步骤1,报表生成装置接收查询条件参数p(如:限制“线路所属公司”为甲公司)和模板参数m的指令,所述查询条件参数p为数据查询的限制条件,所述模板参数m为预定义报表样式的唯一标识编号。
步骤2,确定查询所述模板参数m对应的模板信息M,所述模板信息M包括要查询的内容(如:“线路”主表的“线路客流”、“线路名称”、“线路所属公司”,“线路”主表与“天气”主表的逻辑关联键为“日期”等),和预定义的查询条件(如:“线路所属公司”作为查询条件),以及要查询的样式格式(如:“线路客流”数据列居中显示、客流数量大于1000的数字颜色为红色、表头样式第一行内容“xx公司线路客流运营情况”,居中加粗16号字体显示等)。
步骤3,把所述查询条件参数p与所述模板信息M中的预定义的查询条件做匹配关联,形成查询条件数据集P(即查询时限制条件为“线路所属公司”限定为“甲公司”);
根据用户类型自动获取当前系统权限(如:当前用户只能查看“甲公司”下“普通线路”的数据,“包车线路”数据没有权限查看),生成数据权限的查询条件,并加入到所述查询条件数据集P中。
步骤4,根据所述模板信息M中要查询的内容获取所述模板信息M定义的每个主表和需要查询的主表内容MC,以及各主表间的逻辑关联键的数据集J(如:“天气”主表和“客流”主表通过“日期”逻辑关联起来,即通过逻辑上自定义的联系将两个在系统中无关联的数据表做逻辑上的关联)。
步骤5,依次获取每个主表的主表内容MC(如:列或行标题内容、顺序、查询方式等),通过所述主表内容MC和系统预定义结构数据WD生成数据集Dx,数据集Dx包含:所述主表内容MC需要查询的实际字段名和表名称,所述主表内容MC的计算方式、查询顺序、分类方式和优先级(如:“客流”求加和,按“线路名称”分组,按“线路名称”纵向排序,展示顺序为“线路名称”,“线路所属公司”,“客流”),和所述实际字段名和表名称关联查询的表名和关联键;
所述系统预定义结构数据WD为预定义的整个系统所有业务数据表(即用户能够通过报表看到的数据表)的结构、类型、描述、关联等信息(通过WD可以知道某表中存了哪些业务信息、业务信息的类型、主键关联键有哪些、能否作为权限控制字段等)。
步骤6,结合数据集Dx和查询条件数据集P生成完整的查询数据语句,并执行该语句获得查询结果,并将查询结果存入数据集Rx中,数据集Rx表示第χ个主表的数据。
步骤7,通过所述模板信息M和数据集Dx将数据集Rx和excel数据列对应。
步骤8,判断是否存在未查询的主表数据,若存在返回步骤5。
步骤9,得到所有主表的数据后,根据数据集J将数据集R1至Rn(n为主表数量)关联(如“客流表”主表与“天气表”主表的逻辑关联键为“日期”),形成报表的数据R(展现在报表中的所有数据)。
步骤10,根据所述模板信息M获取excel报表内容样式信息,并将每列的样式信息与列标题对应,存入数据集S;
根据所述模板信息M获取对应模板的表头样式信息,将所述表头样式信息存入数据结构H;并将所述数据结构H设置到excel文件中;进一步,所述表头样式信息包含表头的相对宽度和表头样式、表头的实际宽度。
步骤11,将表示样式的所述数据集S与表示真实数据的所述数据集R建立对应关系,并设置到excel文件中,最终得到excel文件对象WB;
步骤11的具体步骤如下:
获取所述模板信息M中样式扩展方式为数据设置扩展,根据所述数据设置扩展为横向或纵向,对整列或整行按默认样式按列进行渲染(如,设置每列/每行的数据格式、对齐方式、字体大小,颜色,粗细、背景色);
判断该列或行是否有条件样式,若有条件样式,则渲染每个符合条件的单元格样式,若条件样式的扩展方式为横向或纵向扩展,则对整行或整列的单元格均设置条件样式;
所述excel文件中每个单元格的宽度都会根据内容进行宽度自适应,每列宽度取该列所有单元格中最长的宽度。
步骤12,将excel文件WB以http文件流的形式输出至浏览器弹窗。
以上结合附图对本发明进行了示例性描述,显然,本发明具体实现并不受上述方式的限制,凡是采用了本发明的方法构思和技术方案进行的各种非实质性的改进;或者未经改进、等同替换,将本发明的上述构思和技术方案直接应用于其他场合的,均在本发明的保护范围之内。
Claims (6)
1.一种基于spring和poi的web端自定义报表的实现方法,其特征在于,包含以下步骤:
步骤1,报表生成装置接收查询条件参数p和模板参数m的指令,所述查询条件参数p为数据查询的限制条件,所述模板参数m为预定义报表样式的唯一标识编号;
步骤2,确定查询所述模板参数m对应的模板信息M,所述模板信息M包括要查询的内容、预定义的查询条件,以及要查询的样式格式;
步骤3,把所述查询条件参数p与所述模板信息M中的预定义的查询条件做匹配关联,形成查询条件数据集P;
步骤4,根据所述模板信息M中要查询的内容获取所述模板信息M定义的每个主表和需要查询的主表内容MC,以及各主表间的逻辑关联键的数据集J;
步骤5,依次获取每个主表的主表内容MC,通过所述主表内容MC和系统预定义结构数据WD生成数据集Dx,
所述数据集Dx包含:所述主表内容MC需要查询的实际字段名和表名称,所述主表内容MC的计算方式、查询顺序、分类方式和优先级,和所述实际字段名和表名称关联查询的表名和关联键,
所述系统预定义结构数据WD为预定义的整个系统所有业务数据表的结构、类型、描述、关联信息;
步骤6,结合数据集Dx和查询条件数据集P生成完整的查询数据语句,并执行该语句获得查询结果,并将查询结果存入数据集Rx中,所述数据集Rx表示第χ个主表的数据;
步骤7,通过所述模板信息M和数据集Dx将数据集Rx和excel数据列对应;
步骤8,判断是否存在未查询的主表数据,若存在返回步骤5;
步骤9,得到所有主表的数据后,根据数据集J将数据集R1至Rn关联,形成报表的数据R,其中n为主表数量;
步骤10,根据所述模板信息M获取excel报表内容样式信息,并将每列的样式信息与列标题对应,存入数据集S;
步骤11,将表示样式的所述数据集S与表示真实数据的所述数据集R建立对应关系,并设置到excel文件中,最终得到excel文件对象WB。
2.根据权利要求1所述的一种基于spring和poi的web端自定义报表的实现方法,其特征在于,所述查询条件数据集P还包括:根据用户类型的系统权限生成的数据权限的查询条件。
3.根据权利要求1所述的一种基于spring和poi的web端自定义报表的实现方法,其特征在于,所述步骤10中还包括如下步骤:根据所述模板信息M获取对应模板的表头样式信息,将所述表头样式信息存入数据结构H,并将所述数据结构H设置到excel文件中。
4.根据权利要求3所述的一种基于spring和poi的web端自定义报表的实现方法,其特征在于,所述表头样式信息包含表头的相对宽度和表头样式、表头的实际宽度。
5.根据权利要求1-3任一项所述的一种基于spring和poi的web端自定义报表的实现方法,其特征在于,所述步骤11具体包括:
获取所述模板信息M中样式扩展方式为数据设置扩展,根据所述数据设置扩展为横向或纵向,对整列或整行按默认样式按列进行渲染;
判断该列或行是否有条件样式,若有条件样式,则渲染每个符合条件的单元格样式,若条件样式的扩展方式为横向或纵向扩展,则对整行或整列的单元格均设置条件样式;
所述excel文件中每个单元格的宽度都会根据内容进行宽度自适应,每列宽度取该列所有单元格中最长的宽度。
6.根据权利要求5所述的一种基于spring和poi的web端自定义报表的实现方法,其特征在于,还包括步骤12,将所述excel文件对象WB以http文件流的形式输出至浏览器弹窗。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811252670.7A CN109614408B (zh) | 2018-10-25 | 2018-10-25 | 基于spring和poi的web端自定义报表的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811252670.7A CN109614408B (zh) | 2018-10-25 | 2018-10-25 | 基于spring和poi的web端自定义报表的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109614408A CN109614408A (zh) | 2019-04-12 |
CN109614408B true CN109614408B (zh) | 2019-09-20 |
Family
ID=66002830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811252670.7A Active CN109614408B (zh) | 2018-10-25 | 2018-10-25 | 基于spring和poi的web端自定义报表的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109614408B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650712A (zh) * | 2009-08-18 | 2010-02-17 | 深圳市科陆电子科技股份有限公司 | 一种自定义报表的生成管理方法及系统 |
CN104699681A (zh) * | 2013-12-04 | 2015-06-10 | 航天信息股份有限公司 | 一种基于元数据库的数据处理方法 |
CN106649225A (zh) * | 2016-12-30 | 2017-05-10 | 冶金自动化研究设计院 | 一种基于json自定义的报表生成系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120173476A1 (en) * | 2011-01-04 | 2012-07-05 | Nasir Rizvi | System and Method for Rule-Based Asymmetric Data Reporting |
-
2018
- 2018-10-25 CN CN201811252670.7A patent/CN109614408B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650712A (zh) * | 2009-08-18 | 2010-02-17 | 深圳市科陆电子科技股份有限公司 | 一种自定义报表的生成管理方法及系统 |
CN104699681A (zh) * | 2013-12-04 | 2015-06-10 | 航天信息股份有限公司 | 一种基于元数据库的数据处理方法 |
CN106649225A (zh) * | 2016-12-30 | 2017-05-10 | 冶金自动化研究设计院 | 一种基于json自定义的报表生成系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109614408A (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103177575B (zh) | 城区出租车动态在线调度优化系统及其方法 | |
CN111653099B (zh) | 基于手机信令数据的公交客流od获取方法 | |
CN103177561B (zh) | 公交实时路况的生成方法 | |
CN104766473A (zh) | 基于多模式公交数据匹配的公共交通出行特征提取方法 | |
CN106651728B (zh) | 一种综合运输体系客运方式优势运距的确定方法 | |
CN107944472B (zh) | 一种基于迁移学习的空域运行态势计算方法 | |
CN104732765B (zh) | 基于卡口数据的城市道路饱和度实时监测方法 | |
CN107203945A (zh) | 车险分级评估方法及装置 | |
CN110853156B (zh) | 融合公交gps轨迹与ic卡数据的乘客od识别方法 | |
CN106682812A (zh) | 综合运输体系客运方式分担率‑距离转移曲线确定方法 | |
CN109993215A (zh) | 一种基于交通大数据的柔性限行管理方法 | |
CN107230350A (zh) | 一种基于卡口与手机流量话单数据的城市交通量获取方法 | |
CN107590175A (zh) | 一种基于深度学习的出租车载客点推荐方法 | |
CN106448165A (zh) | 一种基于网络约租车数据的路网行程时间可靠性评价方法 | |
CN106157621A (zh) | 一种基于数据分析的智能路况管理系统 | |
CN108596664A (zh) | 一种电子车票的单边交易费用确定方法、系统及装置 | |
CN109614408B (zh) | 基于spring和poi的web端自定义报表的实现方法 | |
CN105389302B (zh) | 一种电网设计评审指标结构信息识别方法 | |
CN110867075A (zh) | 一种评估雨天条件下道路测速仪对驾驶人员反应行为影响的方法 | |
Hajduk | Assessment of urban transport–a comparative analysis of selected cities by taxonomic methods | |
CN109800751B (zh) | 一种基于构建深度学习网络的票据识别方法及终端 | |
CN112949939B (zh) | 基于随机森林模型的出租车载客热点预测方法 | |
CN109960889A (zh) | 轨道交通工具线路典型速度-时间行驶工况构建方法 | |
CN106485921A (zh) | 一种基于社交数据的区域高速路网车流状态分析方法 | |
CN110021163A (zh) | 基于行驶里程数据的网约车路网占有率分析方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |