使用到的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
代码
public void importVehicleInfoExec() throws Exception {
List<VehicleDailyData> vehicleDailyDataList = vehicleService.getVehicleDailyDateList();
ByteArrayOutputStream out = null;
try {
// 返回excel文件流
out = ExcelUtil.generateExcel(vehicleDailyDataList, VehicleDailyData.class);
LOG.debug("开始发送邮件===========================");
LOG.debug("开始发送邮件===========================");
LOG.debug("开始发送邮件===========================");
SendMailUtil.sendFileEmail("车辆日常运行报表",out,"2039701916@qq.com",mailProperties);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (MailException e) {
throw new RuntimeException(e);
} finally {
if(out != null){
out.close();
}
}
}
public class ExcelUtil {
public static <T> ByteArrayOutputStream generateExcel(List<T> dataList, Class<T> clazz) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
// excel写入
EasyExcel.write(out,clazz).sheet(0).doWrite(dataList);
return out;
}
}
public static void sendFileEmail(String subject, ByteArrayOutputStream outputStream, String to, MailProperties mailProperties) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host", mailProperties.getHost());
prop.setProperty("mail.transport.protocol", mailProperties.getProtocol());
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.smtp.ssl.enable", "true");
Session session = Session.getInstance(prop);
Transport ts = session.getTransport();
ts.connect(mailProperties.getHost(), mailProperties.getUsername(), mailProperties.getPassword());
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(mailProperties.getUsername()));
message.setRecipients(RecipientType.TO, StringUtils.isNotBlank(to) ? to : "chkai.good@163.com");
message.setSubject(subject);
MimeBodyPart mbp = new MimeBodyPart();
DataSource source = new ByteArrayDataSource(outputStream.toByteArray(), "application/msexcel");
mbp.setDataHandler(new DataHandler(source));
mbp.setFileName(MimeUtility.encodeText(subject + ".xls"));
MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(mbp);
message.setContent(multipart);
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}
mailProperties对象 是我们自己写的一个配置类,里面有自己的邮箱,密码等信息。