工作时,我们有时候会遇见这样的场景,老板要求我们在数据库中统计一些数据,并以excel表格的方式发送给老板。这时,我们想到的一种方法是通过navicat中查询结果转化为excel的功能,具体操作如下:
那么我们通过sql语句不能拿到我们想要的数据,而是需要进一步在java中进行进一步计算,这时我们就无法使用navicat了。这时我们使用的就是java中的excel操作:easyExcel
本文介绍springboot中如何使用easyExcel
<dependency>
<groupId>com.alibabagroupId>
<artifactId>easyexcelartifactId>
<version>2.1.6version>
dependency>
<dependency>
<groupId>org.apache.poigroupId>
<artifactId>poi-ooxmlartifactId>
<version>3.17version>
dependency>
<dependency>
<groupId>org.apache.poigroupId>
<artifactId>poi-ooxml-schemasartifactId>
<version>3.17version>
dependency>
<dependency>
<groupId>org.apache.poigroupId>
<artifactId>poiartifactId>
<version>3.17version>
dependency>
我们想要得到的excel表格数据一定有某种关系对应,类似于sql查询结果的关系对应。这里我们需要定义这种数据类型,如下:
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class ExcelUser {
@ExcelProperty("用户ID1")
private String id;
@ExcelProperty("用户昵称")
private String nickname;
@ExcelProperty("发布活动数量")
private String count;
@ExcelProperty("所属城市")
private String city;
@ExcelProperty("入驻时间")
private String created_at;
@ExcelProperty("上次登陆时间")
private String updated_at;
@ExcelProperty("联系手机")
private String phone;
@ExcelProperty("联系微信")
private String wechat;
@ExcelProperty("latitude")
private Double latitude;
@ExcelProperty("longitude")
private Double longitude;
}
@ExcelProperty注解标识了excel表中数据首行(字段)与数据的对应关系
public void putExcel() throws IOException {
//1.定义excel表格的存放位置
String filename = "D:\\user.xls";
//2.获得经过计算过后的数据,并封装到我们的excel实体对象ExcelUser中
List<ExcelUser> list=userService.selectMessageToExcel();
//3.创建一个ExcelWriter对象,通过建造者模式,指定这个ExcelWriter对象针对的文件和Excl实体对象
ExcelWriter excelWriter=EasyExcel.write(filename,ExcelUser.class).build();
//4. 创建一个工作簿,并指定名字
WriteSheet writeSheet = EasyExcel.writerSheet("信息").build();
//5.将list写入到工作簿中(并且工作簿与excel表绑定)
excelWriter.write(list,writeSheet);
}
这样我们就可以在对应的路径下得到表格了。
我们在再表格进行进一步的美化,就可以交给老板了。
大量数据转化成excel的方法
easyExcel不仅可以生成excel表格,还可以导入excel表格,解析excel中的数据并存到数据库。更多可以参考官方网站
参考:easyExcel官网