一、问题出现
最近需要实现Excel文件的导出,于是乎选择了EasyExcel组件来做这件事。
二、代码实现
·1、依赖导入
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
2、controller实现类
/**
* 文件下载Controller类
*/
@Slf4j
@Controller
public class FileController {
/**
* 文件下载
*/
@GetMapping("/download")
@ResponseBody
public void download(HttpServletResponse response){
try{
// 设置头部信息和编码
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// URLEncoder.encode防止中文乱码
String filName = URLEncoder.encode("导出的文件", "utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + filName +".xlsx");
// 待导出列表数据,以下就不搞数据上去了,主要是减少代码~~~
List<MyExcelDTO> list = new ArrayList<>();
EasyExcel.write(response.getOutputStream(), MyExcelDTO.class).sheet("第一页").doWrite(list);
}catch(IOException e){
e.printStackTrace();
}
}
}
3、MyExcelDTO实体类
@ExcelIgnore,文件在导出时会忽略该成员变量
@ColunmWidth,设置该成员变量在表格里的列宽
@ExcelProperty,指定该成员变量在表格里的表头名称,以及在第几列
/**
* Excel实体类
*/
@Data
public class MyExcelDTO implements Serializable {
/**
* 主键id
*/
@ExcelIgnore
private Long id;
/**
* 键
*/
@ColumnWidth(40)
@ExcelProperty(value = "key", index = 0)
private Long id;
/**
* 值
*/
@ColumnWidth(40)
@ExcelProperty(value = "value", index = 1)
private String value;
/**
* 是否刪除
*/
@ExcelIgnore
private Integer isDelete;
/**
* 編輯時間
*/
@ExcelIgnore
private Date editTime;
/**
* 創建時間
*/
@ExcelIgnore
private Date createTime;
/**
* 備註
*/
@ColumnWidth(40)
@ExcelProperty(value = "remark", index = 2)
private String remark;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99691.html