JasperReport制作行内容合并的表格

时间:2021-06-10 05:45:00

效果图:

JasperReport制作行内容合并的表格

实现思路一:

交叉表

另一个思路:

普通表格

缺点:无法实现内容 垂直居中显示

准备工作

一、数据准备

DROP TABLE IF EXISTS `address_item_sex_value`;
CREATE TABLE `address_item_sex_value` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`address` varchar(255) DEFAULT NULL,
`sex` varchar(255) DEFAULT NULL,
`item` varchar(255) DEFAULT NULL,
`value` int(11) DEFAULT NULL,
`proportion` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of address_item_sex_value
-- ----------------------------
INSERT INTO `address_item_sex_value` VALUES ('', '城区', '男生', '指标1', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '远郊', '男生', '指标1', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '近郊', '男生', '指标1', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '城区', '女生', '指标1', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '远郊', '女生', '指标1', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '近郊', '女生', '指标1', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '城区', '男生', '指标2', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '远郊', '男生', '指标2', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '近郊', '男生', '指标2', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '城区', '女生', '指标2', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '远郊', '女生', '指标2', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '近郊', '女生', '指标2', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '城区', '男生', '指标3', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '远郊', '男生', '指标3', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '近郊', '男生', '指标3', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '城区', '女生', '指标3', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '远郊', '女生', '指标3', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '近郊', '女生', '指标3', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '城区', '男生', '指标4', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '远郊', '男生', '指标4', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '近郊', '男生', '指标4', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '城区', '女生', '指标4', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '远郊', '女生', '指标4', '', '');
INSERT INTO `address_item_sex_value` VALUES ('', '近郊', '女生', '指标4', '', '');

二、设置SQL与字段

SELECT report.address_item_sex_value.id,
report.address_item_sex_value.address,
report.address_item_sex_value.sex,
report.address_item_sex_value.item,
report.address_item_sex_value.value,
1 a
FROM report.address_item_sex_value order by report.address_item_sex_value.address

SQL中有一个空闲的字段a、有一个默认值。很重要、是为了X轴的交叉表做考虑

三、设计列表

设置横列

JasperReport制作行内容合并的表格

1、选择字段a

2、设置total(按需要、这里不需要汇总列)

设置竖列

JasperReport制作行内容合并的表格

设置交叉值

JasperReport制作行内容合并的表格

四、设计显示

删除横列值

JasperReport制作行内容合并的表格

设置Column groups高度

JasperReport制作行内容合并的表格

设置高度为 0px

JasperReport制作行内容合并的表格

效果图

JasperReport制作行内容合并的表格

设置 水平居中、垂直居中

JasperReport制作行内容合并的表格

表头部分说一下

表头放在ColumnHeader里面,按需自己组装即可。

JasperReport制作行内容合并的表格

最终效果图

JasperReport制作行内容合并的表格