springboot查询数据库生成excel通过邮件发送给多个人
时间: 2023-11-09 19:42:01 浏览: 102
您可以使用以下步骤来实现通过Spring Boot查询数据库生成Excel并通过邮件发送给多个人:
1. 配置数据库连接:在Spring Boot的配置文件中,配置数据库连接信息,如数据库URL、用户名和密码。
2. 查询数据库:使用Spring Boot提供的数据库操作库(如Spring Data JPA)编写查询数据库的代码,获取需要导出的数据。
3. 生成Excel文件:使用Java的Excel处理库(如Apache POI或EasyExcel)编写代码,将查询到的数据写入Excel文件中。
4. 发送邮件:使用Java的邮件发送库(如JavaMail或Spring Mail)编写代码,将生成的Excel文件作为附件发送给多个收件人。
下面是一个简单的示例代码,展示了如何实现上述功能:
```java
// 导入所需的库
// 查询数据库
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// 自定义查询方法
List<User> findByStatus(String status);
}
// 生成Excel文件
public class ExcelGenerator {
public static void generateExcel(List<User> users, String filePath) {
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Users");
// 创建表头
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("ID");
headerRow.createCell(1).setCellValue("Name");
headerRow.createCell(2).setCellValue("Email");
// 填充数据
int rowNum = 1;
for (User user : users) {
Row row = sheet.createRow(rowNum++);
row.createCell(0).setCellValue(user.getId());
row.createCell(1).setCellValue(user.getName());
row.createCell(2).setCellValue(user.getEmail());
}
// 写入文件
try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
workbook.write(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 发送邮件
@Service
public class EmailService {
@Autowired
private JavaMailSender mailSender;
public void sendEmailWithAttachment(String[] recipientEmails, String subject, String body, String attachmentPath) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(recipientEmails);
helper.setSubject(subject);
helper.setText(body);
// 添加附件
FileSystemResource file = new FileSystemResource(attachmentPath);
helper.addAttachment("Users.xlsx", file);
mailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
// 在业务逻辑中使用
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Autowired
private EmailService emailService;
public void exportUsersAndSendEmail(String[] recipientEmails) {
// 查询数据库
List<User> users = userRepository.findByStatus("active");
// 生成Excel文件
String excelFilePath = "path/to/excel/Users.xlsx";
ExcelGenerator.generateExcel(users, excelFilePath);
// 发送邮件
String subject = "Users Report";
String body = "Please find the attached Users report.";
emailService.sendEmailWithAttachment(recipientEmails, subject, body, excelFilePath);
}
}
```
请根据实际需求进行适当的修改和配置,并确保相关的库已添加到项目的依赖中。这样,您就可以通过调用`UserService`中的`exportUsersAndSendEmail`方法来实现查询数据库、生成Excel文件并发送邮件的功能。
阅读全文