阿里巴巴easyExcel百万数据以下载的方式导出
引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>1.1.2-beta5</version>
</dependency>
别引入低版本的依赖,因为低版本依赖不会自动转换时间格式
编写ExcelUtil
public static void export(List<? extends BaseRowModel> list, HttpServletResponse response, Class<? extends BaseRowModel> clazz, String fileName ) {
ServletOutputStream out = null;
try {
out = response.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX, true);
try {
Sheet sheet2 = new Sheet(2, 3,clazz, "sheet", null);
writer.write(list, sheet2);
response.setCharacterEncoding("utf-8");
response.setContentType("application/vnd.ms-excel");
response.setHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "utf-8"));
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.finish();
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
修改实体类
public class HistorySignalInfo extends BaseRowModel {
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.id
*
* @mbg.generated
*/
private Integer id;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.fsuId
*
* @mbg.generated
*/
@ExcelProperty(value = "fsuId", index = 3)
private String fsuid;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.deviceId
*
* @mbg.generated
*/
@ExcelProperty(value = "deviceId", index = 4)
private String deviceid;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.deviceNum
*
* @mbg.generated
*/
@ExcelProperty(value = "设备顺序号", index = 5)
private String devicenum;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.signalvalue
*
* @mbg.generated
*/
@ExcelProperty(value = "信号量", index = 7)
private String signalvalue;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.signalName
*
* @mbg.generated
*/
@ExcelProperty(value = "监控点名称", index = 10)
private String signalname;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.updateTime
*
* @mbg.generated
*/
@ExcelProperty(value = "更新时间", index = 8)
private Date updatetime;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.note
*
* @mbg.generated
*/
@ExcelProperty(value = "备注", index = 9)
private String note;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.signalNum
*
* @mbg.generated
*/
@ExcelProperty(value = "监测点顺序号", index = 6)
private String signalnum;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.deviceName
*
* @mbg.generated
*/
@ExcelProperty(value = "设备名称", index = 2)
private String devicename;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.stationName
*
* @mbg.generated
*/
@ExcelProperty(value = "机房名称", index = 1)
private String stationname;
/**
* This field was generated by MyBatis Generator. This field corresponds to the database column
* v_history.siteId
*
* @mbg.generated
*/
@ExcelProperty(value = "站点名称", index = 4)
private Integer siteid;
}
- 这里要继承BaseRowModel类,重点说明一下这个@ExcelProperty注解,注解里有两个,value="" 这里面的value是你导出的excel里面的表头,index="" index对应列号做映射 如果你想让这个字段为第一列就让index=“1”,以此类推
最后编写一个测试的Controller
@RequestMapping(value = "/HistoryDataExcel", method = RequestMethod.GET)
@ResponseBody
public void cooperation(HttpServletRequest request, HttpServletResponse response){
//查询数据库内的数据
List<HistorySignalInfo> list = mapper.higtoryExport();
//导出的excel的名称
String fileName = "历史遥测数据";
ExcelUtils.export(list, response, HistorySignalInfo.class,fileName);
}
看下导出结果
看这里已经开始下载了,等它下载完打开看看
看时间格式自动转换了,一共是1048571条数据,除了响应时间有点长,其他的没毛病
一个在杭漂流的年轻人