Java如何实现将数据库表导出到Excel表格
我们经常需要将MYSQL里的表导出成为Excel表格,这样可以使用Excel表格自带的许多工具,也更方便那些非计算机专业的人员浏览。
Java中为我们提供了两种方式来实现,一种是POI,一种是阿里的easyExcel。这里我介绍得是POI功能,因为阿里的easyExcel功能虽然代码上更容易理解,但是容易和别的依赖冲突,因此不在这里介绍,感兴趣的朋友可以自己去搜索一下。
1、导入Maven依赖
<!-- 导出表格poi依赖03版本--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <!-- 导出表格poi依赖07版本--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
03版本的支持.xls文件,07版本兼容了.xlsx和.xls文件,因此推荐大家使用07版本的依赖,或者两个都添加也没有关系
2、代码编写
PATH变量指向的是我们需要保存的路径,filename对应的就是该路径+文件名,这里我们使用了当前时间的字符串,这样可以直接看成是哪天导出的表格。
导出的表格效果如下,桌面的表文件名
不难看出, 订单表的字段是由代码Sheet sheet = workbook.createSheet("订单表")控制的
表的首行内容是由这段代码所控制的
Row rowHead=sheet.createRow(0); rowHead.createCell(0).setCellValue("订单号"); rowHead.createCell(1).setCellValue("用户名"); rowHead.createCell(2).setCellValue("手机号"); rowHead.createCell(3).setCellValue("地址"); rowHead.createCell(4).setCellValue("收货人"); rowHead.createCell(5).setCellValue("实收金额"); rowHead.createCell(6).setCellValue("支付方式"); rowHead.createCell(7).setCellValue("下单时间"); rowHead.createCell(8).setCellValue("结账时间"); rowHead.createCell(9).setCellValue("订单状态");
从第二行开始的表的正式内容是由以下这段代码控制的
Order表的实体类如下
这里使用@Data注解,自动注入get和set方法,如果大家不知道如何使用的话,将@Data注解删去,使用IDEA自动生成get和set方法即可。
Orders表结构如上