Java报表-数据可视化

Java报表-数据可视化,第1张

Java报表-数据可视化

报表 = 多样的格式 + 动态的数据

一、Java处理Excel 1、JXL

只能处理Excel2003版本以前的

2、POI
  • apache的项目;
  • 用模板的方式导出Excel,提高处理复杂Excel的效率;
  • 自定义导出引擎,在Excel模板标记实体字段,把配置做到Excel中来减少代码的改动;
百万数据的导出

思路:
新版Excel的内部结构是XML,其解析方式有dom4j和sax。百万数据的导出适合用sax的解析方式,边扫描边解析,防止内存的大量消耗。

不能使用模板,不能使用太多样式。

案例:
1、用存储过程向表中插入500万条数据。

#1、创建表
CREATE TABLE `tb_user2` (
  `id` bigint(20) NOT NULL  COMMENT '用户ID',
  `user_name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `phone` varchar(15) DEFAULT NULL COMMENT '手机号',
  `province` varchar(50) DEFAULT NULL COMMENT '省份',
  `city` varchar(50) DEFAULT NULL COMMENT '城市',
  `salary` int(10) DEFAULT NULL,
  `hire_date` datetime DEFAULT NULL COMMENT '入职日期',
  `dept_id` bigint(20) DEFAULT NULL COMMENT '部门编号',
  `birthday` datetime DEFAULT NULL COMMENT '出生日期',
  `photo` varchar(200) DEFAULT NULL COMMENT '照片路径',
  `address` varchar(300) DEFAULT NULL COMMENT '现在住址'
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#2、创建存储过程
DELIMITER $$    -- 重新定义“;”分号
DROP PROCEDURE IF EXISTS test_insert $$   -- 如果有test_insert这个存储过程就删除
CREATE PROCEDURE test_insert()			  -- 创建存储过程

BEGIN
	DECLARE n int DEFAULT 1;				    -- 定义变量n=1
	SET AUTOCOMMIT=0;						    -- 取消自动提交
	
		while n <= 5000000 do					
			INSERT INTO `tb_user2` VALUES ( n, CONCAT('测试', n), '13800000001', '北京市', '北京市', '11000', '2001-03-01 21:18:29', '1', '1981-03-02 00:00:00', '\static\user_photos.jpg', '北京市西城区宣武大街1号院');
			SET n=n+1;
		END while;
		COMMIT;
END $$

#3、开始执行 插入500W数据大概需要200至300秒左右
CALL test_insert();			     
 

2、用POI导出Excel。规定每个工作表只存100万条数据,因此需要5个工作表。

百万数据的导入

思路:
用sax的解析方式,否则会堆内存溢出(OutOfMemoryError)。
实现:
实现SheetContentsHandler接口。

3、EasyPOI

3.1 介绍:
可以简化POI的代码量,但不能替代POI。

曾今在项目中用过EasyPOI,需求是把销售台账导出到excel(根据日期区间)。
淄博项目Git地址

  • EasyPOI的案例导出有bug,未找到问题所在。
    数据库的photo字段不能为staticuser_photos11.jpg

3.2 应用场景
数据导出
数据导入
详细数据模板导出

二、图形报表 ECharts

百度前端团队开发的基于JS的组件,底层依赖轻量级的矢量图形库ZRender,可高度个性化定制。目前捐给了Apache。
案例的Git地址

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5686390.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存