thinkphp5.1写一个邮件下载导出为excel文档功能
时间: 2024-05-10 20:16:20 浏览: 247
首先,你需要安装 PHPMailer 库来发送邮件和 PHPExcel 库来生成 Excel 文档。你可以在 composer.json 文件中添加以下依赖:
```
{
"require": {
"phpmailer/phpmailer": "^6.2",
"phpoffice/phpexcel": "^1.8"
}
}
```
然后在终端执行 `composer install` 命令来安装依赖。
接下来,你需要创建一个控制器来处理邮件下载导出功能。假设你已经创建了一个 `MailController` 控制器。
首先,导入需要的类:
```php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPExcel;
use PHPExcel_IOFactory;
use PHPExcel_Style_Alignment;
```
然后,你需要编写一个方法来发送邮件和生成 Excel 文档。
```php
public function downloadExcel()
{
// 获取邮件地址
$email = 'example@example.com';
// 创建一个新的 PHPExcel 对象
$objPHPExcel = new PHPExcel();
// 设置 Excel 标题
$objPHPExcel->getActiveSheet()->setCellValue('A1', '姓名');
$objPHPExcel->getActiveSheet()->setCellValue('B1', '年龄');
// 假设你有一个数组来存储数据,这里只是做一个示例
$data = [
[
'name' => '张三',
'age' => 20
],
[
'name' => '李四',
'age' => 25
]
];
// 遍历数据并将其添加到 Excel 中
$row = 2;
foreach ($data as $item) {
$objPHPExcel->getActiveSheet()->setCellValue('A' . $row, $item['name']);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $row, $item['age']);
$row++;
}
// 设置单元格宽度和对齐方式
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getStyle('A1:B1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 生成 Excel 文件
$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$writer->save('example.xlsx');
// 发送邮件
$mail = new PHPMailer(true);
try {
// 邮件设置
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = 'smtp.example.com'; // SMTP 服务器地址
$mail->SMTPAuth = true;
$mail->Username = 'example@example.com'; // SMTP 用户名
$mail->Password = 'password'; // SMTP 密码
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
// 收件人地址和主题
$mail->setFrom('example@example.com', 'From Name');
$mail->addAddress($email, 'To Name');
$mail->Subject = 'Subject';
// 添加附件
$mail->addAttachment('example.xlsx');
// 发送邮件
$mail->send();
echo '邮件已发送';
} catch (Exception $e) {
echo '邮件发送失败:' . $mail->ErrorInfo;
}
// 删除生成的 Excel 文件
unlink('example.xlsx');
}
```
在上面的代码中,我们首先创建了一个新的 PHPExcel 对象并设置了 Excel 标题。然后我们遍历数据并将其添加到 Excel 中。接着我们设置单元格宽度和对齐方式,并生成 Excel 文件。
接下来,我们使用 PHPMailer 类来发送邮件并添加生成的 Excel 文件作为附件。最后,我们删除生成的 Excel 文件。
现在,当你调用 `downloadExcel` 方法时,它将会发送一封带有 Excel 附件的邮件到指定的邮箱地址。
阅读全文