Java 使用EasyExcel导出excel文件
一、引入pom依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.7</version>
</dependency>
二、导出实体
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentFontStyle;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ContentRowHeight(30)
@HeadRowHeight(25)
@ColumnWidth(20)
@ContentFontStyle(fontHeightInPoints = 18, fontName = "Monospaced")
@Builder
public class FailDeviceExcel {
@ColumnWidth(30)
@ExcelProperty(value = "问题设备资产编码")
private String deviceAssetCode;
@ColumnWidth(50)
@ExcelProperty(value = "错误原因")
private String errorReason;
@ColumnWidth(100)
@ExcelProperty(value = "解决办法")
private String solution;
}
三、 生成excelController
@GetMapping("/download/fail-list")
public Response<Void> downloadFailList(HttpServletResponse response) throws IOException {
List<FailDeviceExcel> list = new ArrayList<>();
list.add(FailDeviceExcel.builder().deviceAssetCode("DASD4324").errorReason("编码重复").solution("请重新上传").build());
String fileName = "下载导入失败数据" );
response.setHeader("Content-disposition", "attachment;filename*=utf-8''"
+ URLEncoder.encode(fileName, "utf-8") + ".csv");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
EasyExcel.write(response.getOutputStream(), FailDeviceExcel.class).head(FailDeviceExcel.class).sheet().doWrite(list);
return Response.ok();
}
四、效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/11c965e35f7a4ac5af17169b17fec653.png)