thinkphp下phpmailer和phpexcel的使用记录

首先官网下载两个文件包

都存在Thinkphp-Library-Vendor下

1.phpexcel:

切记,PHPEXCEL.php务必放在Vendor下不要放到文件夹中

方法定义:

在Application-common-function.php中定义如下方法

function <span style="font-family: Arial, Helvetica, sans-serif;">expRate</span><span style="font-family: Arial, Helvetica, sans-serif;">(){//导出Excel</span>
    $xlsName  = "<span style="font-family: Arial, Helvetica, sans-serif;">Rate</span><span style="font-family: Arial, Helvetica, sans-serif;">";</span>
    $xlsCell  = array(
        array('pv','pv'),
        array('uv','uv'),
        array('exitn','跳出数')
    );
    $xlsModel = M('Rate');
    $xlsData  = $xlsModel->Field('pv,uv,exitn')->select();
    exportExcel($xlsName,$xlsCell,$xlsData);
}

function exportExcel($expTitle,$expCellName,$expTableData){
    $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
    $fileName = $_SESSION['loginAccount'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
    $cellNum = count($expCellName);
    $dataNum = count($expTableData);
    vendor("PHPExcel");
    $objPHPExcel = new PHPExcel();
    $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');

    $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s'));
    for($i=0;$i<$cellNum;$i++){
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
    }
    // Miscellaneous glyphs, UTF-8
    for($i=0;$i<$dataNum;$i++){
        for($j=0;$j<$cellNum;$j++){
            $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
        }
    }

    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
    header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    echo $objWriter->save(str_replace('.php', '.xls', __FILE__));

}

在需要的class类里调用如下

 public function makefile(){
      
        expRate();

 }

大功告成。不过当时遇到个问题就是save的时候文件的路径和名字~只有在引用如上的内容才能保存下来。然后文件名是functions.xls。。有待后续查验处理。

</pre><p></p><p></p><p>2.phpmail</p><p> 同上。定义代码也在function.php下</p><p></p><pre name="code" class="php">function sendMail($to, $subject, $content) {

    Vendor('PHPMailer.PHPMailerAutoload');

    $mail = new PHPMailer(); //实例化
    $mail->IsSMTP(); // 启用SMTP
    $mail->Host=C('MAIL_HOST'); //smtp服务器的名称(这里以163邮箱为例)
    $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证
    $mail->Username = C('MAIL_USERNAME'); //你的邮箱名
    $mail->Password = C('MAIL_PASSWORD') ; //邮箱密码
    $mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址)
    $mail->FromName = C('MAIL_FROMNAME'); //发件人姓名
    $mail->AddAddress($to,"name");
    $file = './Application/Common/Common/function.xls';

            is_file($file) && $mail->AddAttachment($file);


    $mail->WordWrap = 50; //设置每行字符长度
    $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件
    $mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码
    $mail->Subject =$subject; //邮件主题
    $mail->Body = $content; //邮件内容
    $mail->AltBody = "不支持html哦~"; //邮件正文不支持HTML的备用显示
    if(!$mail->Send()) {
        echo "Message could not be sent. <p>";
        echo "Mailer Error: " . $mail->ErrorInfo;
        exit();
    } else {
        echo "Message has been sent";
    }
}
还需要在conf-config.php下定义

// 配置邮件发送服务器
'MAIL_HOST' =>'smtp.163.com',
    'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证
    'MAIL_USERNAME' =>'xxx@163.com',
    'MAIL_FROM' =>'xxx@163.com',
    'MAIL_FROMNAME' =>'xxx@163.com',
    'MAIL_PASSWORD' =>'xxx',
    'MAIL_CHARSET' =>'utf-8',
    'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件
);

配置完毕

调用如下

 //expUser();
        $Model = M('Mail');
        $mailList = $Model->Field('mail')->select();

         for($i=0;$i<count($mailList);$i++){

            $sendl = sendMail($mailList[$i]['mail'],'数据导出','数据导出');
             echo $sendl;
         }
       exit;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值