<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>1.1.2-beta5</version>
</dependency>
@Component
public class ExcelFactory<T extends BaseRowModel> {
public ExportExcelUtil<T> createExportExcel() {
return new ExportExcelUtil<>();
}
}
@Data
public class GuangGaoJiExcel extends BaseRowModel {
@ExcelProperty(value = {"公司名"},index = 0)
private String companyName;
@ExcelProperty(value = {"接入码"},index = 1)
private String machineNum;
@ExcelProperty(value = {"接入密码"},index = 2)
private String machineSeq;
@ExcelProperty(value = {"发布信息账号"},index = 3)
private String publishAccount;
@ExcelProperty(value = {"公司logo"},index = 4)
private String logo;
@ExcelProperty(value = {"公司地址"},index = 5)
private String address;
@ExcelProperty(value = {"广告宣传语"},index = 6)
private String slogan;
@ExcelProperty(value = {"摆放位置"},index = 7)
private String location;
@ExcelProperty(value = {"创建时间"},index = 8)
private String createTime;
@ExcelProperty(value = {"创建人"},index = 9)
private String createBy;
}
@Resource
private ExcelFactory excelFactory;
public void exportData(HttpServletResponse response) {
List<Long> idList = dao.getAllId();
if (idList.size() > 0) {
List<GuangGaoJiExcel> data = new ArrayList<>();
for (Long id : idList) {
logger.info("id:{}",id);
AdPartner adPartner = dao.findById(id).orElse(null);
User user = userDao.findById(String.valueOf(adPartner.getUserId())).orElse(null);
AdPartnerDto dto = getDetail(id);
GuangGaoJiExcel guangGaoJiExcel = new GuangGaoJiExcel();
BeanUtils.copyProperties(dto,guangGaoJiExcel);
guangGaoJiExcel.setCreateTime(String.valueOf(adPartner.getCreatedTime()));
if (null != user) {
guangGaoJiExcel.setCreateBy(user.getNickname());
}
data.add(guangGaoJiExcel);
}
String name = "广告机数据表.xlsx";
try {
excelFactory.createExportExcel().exportExcel(response,data, GuangGaoJiExcel.class,name);
} catch (Exception e) {
logger.error("下载失败:{}",e.getMessage());
}
}
}
public class ExportExcelUtil<T extends BaseRowModel> {
public ExportExcelUtil() {}
/**
* 导出excel表格
*/
public void exportExcel(HttpServletResponse response, List<T> data, Class<T> clazz, String fileName) throws IOException {
response.reset();
response.setContentType("application/vnd.ms-excel");
// 注意,这里filename*=utf-8''是为了避免导出的文件名乱码!!!
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
OutputStream out = null;
try {
out = response.getOutputStream();
//ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX);
StyleExcelHandler handler = new StyleExcelHandler();
//ExcelWriter writer = new ExcelWriter(null,out, ExcelTypeEnum.XLSX,true);
ExcelWriter writer = new ExcelWriter(null,out, ExcelTypeEnum.XLSX,true,handler);
Sheet sheet1 = new Sheet(1, 0, clazz);
sheet1.setSheetName("sheet1");
writer.write(data, sheet1);
writer.finish();
} finally {
if (out != null) {
out.close();
}
}
}
public void createExcel(ByteArrayOutputStream out,List<T> data, Class<T> clazz) throws IOException{
//StyleExcelHandler handler = new StyleExcelHandler();
ExcelWriter writer = new ExcelWriter(null,out, ExcelTypeEnum.XLSX,true);
Sheet sheet1 = new Sheet(1, 0, clazz);
sheet1.setSheetName("在线咨询数据分析表");
writer.write(data, sheet1);
writer.finish();
}
}