一.生成Excel
找了个插件:PHP_XLSXWriter
github地址:https://github.com/mk-j/PHP_XLSXWriter
二.参考代码
我是按照我自己项目的写的代码,需要自己修改
发送邮件需要的下载的文件在上一篇博客有参考地址
//调用发邮件方法
public function sendEmail(){
require "static/lib/phpXlsxWriter/xlsxwriter.php";//调用生成execl文件的类文件
//前端传过来的收件人邮箱
$request=Request::instance();
$data=$request->param();
$toemail=$data["toemail"];//收件人邮箱
//$toemail="1146383603@qq.com";
$list=json_decode($data["incdata"],true);//要写入execl文件的数据
$subject="服务项目收入流水";
$body="这是40天服务项目流水统计,请注意查收!!";
//生成execl文件
//表格头信息
$header = array(
'时间'=>'string',//text
'价格'=>'string',//text
'佣金'=>'string',
'收入'=>'string',
);
//表格内容
// $list = array(
// array('南华证券有限公司','测试1','手机炒股','M11uM+0+QwoRcI3SA','2019-01-15'),
// array('北华证券有限公司','测试2','电脑炒股','M11uM+0+QwoRcI3SB','2019-01-17'),
// array('东华证券有限公司','测试3','不要炒股','M11uM+0+QwoRcI3SC','2019-01-16'),
// );
$writer = new \XLSXWriter();
$writer->writeSheetHeader('Sheet1', $header);
foreach($list as $row)
$writer->writeSheetRow('Sheet1', $row);
// 输出文件
$writer->writeToFile('bill.xlsx');
if(is_file('bill.xlsx')){
$file="bill.xlsx";
$res=$this->Mail($toemail,$subject,$body,$file);
if ($res==1){
//删除xlsx文件
$bol=unlink("bill.xlsx");
if ($bol){
//echo "发送邮件成功";
echo returnData(1,"发送邮件成功");
exit;
}
}else{
//echo "发送邮件不成功";
echo returnData(0,"发送邮件不成功");
exit;
}
}else{
//
//echo "execl生成不成功";
echo returnData(0,"execl文件生成不成功");
exit;
}
}
//
/** * 封装邮件Mail方法 * address 收件人邮箱 * subject 邮件标题 * body 邮件内容 * file 文件路径 */
public function Mail($toemail,$subject,$body,$file=""){
//$toemail = '1146383603@qq.com';//这里写的是收件人的邮箱
$mail=new PHPMailer();//PHPMailer
$mail->isSMTP();// 使用SMTP服务(发送邮件的服务)
$mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
$mail->Host = "smtp.qq.com";// 发送方的SMTP服务器地址
$mail->SMTPAuth = true;// 是否使用身份验证
$mail->Username = "487703445@qq.com";// 申请了smtp服务的邮箱名(自己的邮箱名)
$mail->Password = "rfieybgwozukbgie";// 发送方的邮箱密码,不是登录密码,是qq的第三方授权登录码,要自己去开启(之前叫你保存的那个密码)
$mail->SMTPSecure = "ssl";// 使用ssl协议方式,
$mail->Port = 465;// QQ邮箱的ssl协议方式端口号是465/587
$mail->setFrom("487703445@qq.com","xiaoxia");// 设置发件人信息,如邮件格式说明中的发件人,
$mail->addAddress($toemail,'亲爱的你');// 设置收件人信息,如邮件格式说明中的收件人
$mail->isHTML(true); //邮件正文是否为html编码 true或false
$mail->addReplyTo("487703445@qq.com","Reply");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
//$mail->addCC("xxx@163.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
//$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
if ($file !== '') $mail->AddAttachment($file); // 添加附件
//$mail->AddAttachment("test.xlsx","test.xlsx");// 添加附件
$mail->Subject = $subject;// 邮件标题
$mail->Body = $body;// 邮件正文
//$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用**
if(!$mail->send()){ // 发送邮件
// echo "Message could not be sent.";
// echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
return 0;
}else{
//echo '';
//return '发送成功';
return 1;
}
}