FineReport学习——动态格间运算
来源:互联网 发布:小米网络劫持怎么解决 编辑:程序博客网 时间:2024/06/03 03:38
本文为对帆软第八讲的问题深入并加深难度的总结;
视频连接
http://bbs.fanruan.com/plugin.php?id=threed_video:view&tid=67986&cid=10
创建数据库
/*Navicat MySQL Data TransferSource Server : arvinSource Server Version : 50624Source Host : localhost:3306Source Database : creekTarget Server Type : MYSQLTarget Server Version : 50624File Encoding : 65001Date: 2017-06-16 16:16:46*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for month_selll-- ----------------------------DROP TABLE IF EXISTS `month_selll`;CREATE TABLE `month_selll` ( `id` int(11) NOT NULL AUTO_INCREMENT, `month` varchar(2) DEFAULT NULL, `sell` double(10,2) DEFAULT NULL, `year` varchar(4) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;-- ------------------------------ Records of month_selll-- ----------------------------INSERT INTO `month_selll` VALUES ('1', '2', '1200.00', '2010');INSERT INTO `month_selll` VALUES ('2', '3', '5462.21', '2010');INSERT INTO `month_selll` VALUES ('3', '4', '2545.58', '2010');INSERT INTO `month_selll` VALUES ('4', '5', '5454.55', '2010');INSERT INTO `month_selll` VALUES ('5', '6', '4794.32', '2010');INSERT INTO `month_selll` VALUES ('6', '7', '5797.00', '2010');INSERT INTO `month_selll` VALUES ('7', '1', '2564.30', '2011');INSERT INTO `month_selll` VALUES ('8', '2', '4564.56', '2011');INSERT INTO `month_selll` VALUES ('9', '3', '4156.55', '2011');INSERT INTO `month_selll` VALUES ('10', '4', '2412.25', '2011');INSERT INTO `month_selll` VALUES ('11', '5', '4543.15', '2011');INSERT INTO `month_selll` VALUES ('12', '10', '1500.00', '2015');
创建模板
依据图中将年份、月份、销售额三个字段放入,并添加需要计算的样式。
B2的父格:A2
C2的父格:B2
D2、E2、F2、G2、H2的父格:C2
A3、C3的父格:A2
直接贴出各个计算单元格的公式,具体理解请参照连接。
Finereport公式不区分大小写。
D2:C2-C2[B2:1]
E2:c2/sum(c2[!0]{A2=$A2})
F2:if(&B2>1,c2/c2[B2:-1],0)
H2:G2[B2:-1]+C2
C3:if(&A2=1,G2[B2:-1]+C2,if(&B2=1,c2+h2[A2:-1,B2:!-1],c2+h2[b2:-1]))
公式解释:
C2[B2:1]:拿到B2单元格扩展出来的第一个值对应的C2单元格的值(可以理解为下标,或一维坐标);
c2[!0]:拿到C2单元格扩展出来的所有值;
$A2:表示A2单元格的值;
&B2:扩展后每个单元格的位置,返回int型,如1,2,3,4等;
{}:表示限制条件;
c2[B2:-1]:拿到B2单元格扩展出来的上一个值对应的C2单元格的值;
c2[B2:!-1]:拿到B2单元格扩展出来的最后一个值对应的C2单元格的值;
h2[A2:-1,B2:!-1]:拿到①A2单元格扩展出来的上一个值,②且B2单元格扩展出来的最后一个值同时对应的h2单元格的值(类似于二维坐标);
if(expr1, expr2, expr3):如果expr1为true,返回expr2,否则返回expr3
预览结果
Web预览结果如下:
其中:占比表示占据所在年份的比例,跨层累计表示数据的累加。
- FineReport学习——动态格间运算
- 润乾——动态格间运算
- 帆软—finereport产品调研
- FineReport报表软件—纯JAVA
- finereport报表动态表格实现
- Finereport
- finereport
- FineReport
- 动态格间运算--分组汇总
- 如何利用FineReport制作动态树报表
- 理解FineReport缓存系列1——数据集缓存
- FineReport——获取控件值和单元格值
- finereport帮助文档初期学习总结
- finereport帮助文档中期学习总结
- Python新手学习基础之运算符——成员运算与身份运算
- PHP学习笔记——运算符
- 学习C++——运算符重载
- 【C++学习】——指针运算
- 日常小结篇-svn,redis,html,nginx
- Android新特性之CardView的简单使用
- html扫描相对路径的问题
- 【C#】IndexOf 干货用法
- fullCalendar设置单元格背景色
- FineReport学习——动态格间运算
- Maven配置文件settings.xml详解
- 经典数据结构和算法
- 最短路之Bellman-Ford算法
- Android 7.0 Launcher3 去掉应用抽屉
- linux网络编程 socket
- 读(深入浅出ES6)系列笔记(二)
- DelayQueue延时队列的使用
- python基础教程学习记录