easyexcel大数据量(百万数据),写入到excel
【代码】easyexcel大数据量(百万数据),写入到excel。
·
代码
/**
* easyexcel大数据量(百万数据),写入到excel
*/
@Test
void bigData() throws FileNotFoundException {
//输出流,确定文件存放位置
FileOutputStream fileOutputStream = new FileOutputStream("E:\\tmp\\user.xlsx");
//所有数据
ArrayList<User> users = new ArrayList<>();
for (int i = 0; i < 100 * 30000; i++) {
User user = new User();
user.setCjsj(new Date().toString());
user.setId(i);
user.setLxfs(i + "");
user.setYxds("广州");
user.setTzqy("广东");
users.add(user);
}
//将数据切分成多个,放置到不同的sheet
ArrayList<List<User>> objects = new ArrayList<>();
int size = 100 * 200;
int sheetNum = users.size() / size + (users.size() % size > 0 ? 1 : 0);
for (int i = 0; i < sheetNum; i++) {
objects.add(users.subList(i * size, (i + 1) * size <= users.size() ? (i + 1) * size : users.size()));
}
ExcelWriter build = EasyExcel.write(fileOutputStream, User.class)
.build();
//将数据写入到excel,循环写入
for (int i = 0; i < objects.size(); i++) {
build.write(objects.get(i), EasyExcel.writerSheet("表格" + i).build());
}
build.finish();
}
从数据库实现
@Test
void sqlexport() throws FileNotFoundException {
//输出流,确定文件存放位置
FileOutputStream fileOutputStream = new FileOutputStream("E:\\tmp\\user.xlsx");
ExcelWriter build = EasyExcel.write(fileOutputStream, User.class)
.build();
//1.查询数据量大小
Integer number = fileService.querySum();
int size = 100 * 1000;
//2.计算有多少个sheet
int sheetNum = number / size + (number % size > 0 ? 1 : 0);
//3.循环写入
for (int i = 0; i < sheetNum; i++) {
List<User> users = fileService.queryUserByPage(i * size, size);
build.write(users, EasyExcel.writerSheet("表格" + i).build());
}
//4.关闭流
build.finish();
}
dao层
/**
* 查询数据量有多少
*/
public Integer querySum() {
String sql = "select count(*) from user";
Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
return integer > 0 ? integer : 0;
}
/**
* 分页查询数据
*
* @param start
* @param size
* @return
*/
public List<User> queryUserByPage(Integer start, Integer size) {
//开始位置,拿多少数据(]
String sql = String.format("select * from user limit %s,%s", start, size);
List<User> users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
return users;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)