使用PHP生成Excel文件并通过邮件发送

需求:每周一自动检测一个月内即将过期的用户,生成excel2007文件(xlsx文件)并发送给指定的人员。

做成一个脚本,使用定时任务即可解决。脚本分解为两步:生成Excel,发送邮件。

一.生成Excel:使用简单的更改文件头(header)和使用table标签生成Excel文件会出现各种问题——打开的时候会有提醒,或者其他语言无法解析。使用phpExcel插件(官方已不再维护),在php7.2以上版本会出现兼容性问题。

又找了个插件完美解决。就是:PHP_XLSXWriter

相比于phpExcel,PHP_XLSXWriter小而强悍,它并没有PHPExcel功能丰富,很多高级操作比如冻结表头,并不具备,但是它导出速度非常快,非常适合于数据量特别大,报表格式不是很复杂的导出需求。github地址:https://github.com/mk-j/PHP_XLSXWriter

二.发送邮件:我使用的是自己封装的一个邮件类。(下篇博客会贴出来给大家做一个参考)

实现代码如下:(只是一个例子,供参考)

<?php 
$dir=dirname(__FILE__);//查找当前脚本所在路径
include_once( $dir."/xlsxwriter.class.php");//引入
//表格头信息
$header = array(
  '公司'=>'string',//text
  '部门'=>'string',//text
  '产品名称'=>'string',
  '产品id'=>'string',
  '截止时间'=>'date',
);
//表格内容
$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);
/**如果想直接导出表格【浏览器中】
 代码直接如下即可,写好的接口 需要用浏览器请求,使用postman 会看到乱码[类似用文本打开Excel文件]
$name = 'aaa.xlsx';
header('Content-Type:application/vnd.ms-excel');
header("Content-Disposition:attachment;filename=$name");
//输出到浏览器
$writer->writeToStdOut();
$writer = null;
exit;
**/
// 输出文件
// $writer->writeToFile('test.xlsx');
//将文件内容赋值给$data
$data = $writer->writeToString();
$attachment = array("文件名.xlsx"=>$data);
//收件人email地址
$sendMailTo = "test@mail.com,test1@mail.com,test2@mail.com";
$subject = "邮件名称";
$body = "邮件内容";
//发送邮件
sendMail($sendMailTo,$subject,$body,$attachment);
// 此处用到的邮件类下一篇贴出供参考
function sendMail($sendMailTo,$subject,$body,$attachment = null)
{
	if(!empty($attachment)){
		$newAttachment = array();
		foreach ($attachment as $key => $value) {
			$newAttachment[] = array(
				'datatype' => 'data',
				'data' => $value,
				'filename' => $key
			);
		}
		$attachment = $newAttachment;
	}
	$emailArr = explode(',', $sendMailTo);
	foreach ($emailArr as $email) {
		Mail::sendemail($email,$subject,$body,$attachment);
	}
}
?>

定时,每周一跑一次。需求解决


关于PHP_XLSXWriter的使用,如果是用在html页面,通过点击按钮导出表格的话,可以这么用:

$name = 文件名;
header('Content-Type:application/vnd.ms-excel');
header("Content-Disposition:attachment;filename=$name");
//输出到浏览器           
$writer->writeToStdOut('php://output');
$writer = null;

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
zzzphp免费开源建站系统采用PHP免费建站整站系统,所有源码开源完整,支持手机自动同步。 zzzphp免费开源建站系统功能: 1.支持mysql,sqlite数据库。 2.自带手机站,支持独立域名 3.自带会员系统。 4.自带短信接口。 以下功能需插件支持: 1.多语功能(26种语言,支持自动翻译) 2.站群功能(可自动添加省市站群) 3.伪站群功能(标题自动加入地区前缀) 4.商城功能(多参数商城、微商城、积分商城等) 5.支付功能(支付宝、微信、财务通、paypal等) 6.批量添加(Excel、多图上传等) 7.投稿、点赞、投票、万能表单、评论、关键词、筛选、排序等 8.微信登陆、微信分享、qq登陆等 (增删改查不做描述): 网站信息  名称,logo,微信,网址,关键词描述,联系方式(qq,电话,邮箱、联系人支持多组),百度地图(支持自动标注),统计代码 系统设置 网站开关,后台天气开关,回收站开关 会员开关,手机验证,邮箱验证,验证码开关 留言开关,匿名留言,会员留言,管理员审核,管理员回复,可增加自定义留言参数(文本,数字,单选,多选,下拉)。 手机开关 水印开关:文字|图片水印,水印位置,水印质量 邮件提醒:发信服务器设置,提醒开关, 短信验证码:注册验证码,找回密码验证码,支持查询余额及发送记录 数据库设置:支持mysql,sqlite,access设置 模型管理:支持单篇,文章,产品,图片,案例,下载,招聘,视频,品牌,留言模型,支持自定义模型 分类管理:支持批量增加分类,支持删除进回收站,分类大图,分类小图,中文标题,英文标题,Pc列表模板定义,PC内容模板定义,wap列表模板定义,wap内容模板定义,支持4种位置调用方法,支持会员级别访问控制 幻灯管理:最多支持无限组幻灯,可定义高、宽、图片,链接,内容及两条备用参数。 友情链接:最多支持八组链接,支持文本和图片类型,可定义名称,链接,图片。 TAG管理:支持内容自动页创建,统计tag使用次数。 自定义内容:带编辑器,可任意前台位置调用。 本地模板:可随时切换选择模板。 在线模板:可及时了解最新模板。 模板管理:本地模板支持在线编辑,支持css,js,html,tpl,txt等文件编辑。 模式设置:支持动态,静态,伪静态,缓存,自定更新频率设定,可设定前台页面扩展名。 静态列表:可直接编辑静态页面,支持一键清空。 缓存列表:仅支持前台缓存页面编辑,支持一键清空(清空功能包含后台页面)。 网站地图:后台浏览,支持生成前台sitemap.html,及sitemap.xml文件 上传设置:支持图片上传,附件上传,视频上传,设置大小,设置压缩,设置水印。 上传管理:支持upload文件夹,所有文件夹及内容的管理 数据库备份:支持备份还原,备份记录可查。 广告管理:广告发布,广告发布时间,广告到期时间,自定义广告模板(默认带从上弹出,从上展出,对联广告,固定底部,图片广告,图片内容,右下弹出等模板)。 管理组管理:权限管理,分类权限管理 管理员管理:权限、密码、资料、头像 会员组管理:会员功能,会员注册,会员登录,会员中心,找回密码,修改密码。 丰富的插件功能: 伪站群插件,真站群插件,支持自动翻译的多语插件 商城插件,手机商城,支付宝支付、微信支付、财付通、paypal 积分商城,会员推广,万能表单 微信登陆,qq登陆,微博登陆 排序,筛选,多条件搜索 投稿,评论,点赞,投票,收藏 zzzphp免费开源建站系统更新日志: 20210518-zzzphp V2.0.5正式版 1.进一步修复安全漏洞,请及时更新。 2.上传数据表增加了f_user字段,用来记录上传者。 3.修复后台文本域无法使用回车的bug。 4.修复会员资料无法修改地区的bug。 5.后台先上传图片,将自动将图片名称同步到标题上。 6.默认集成阿里云短信接口,后台输入api信息即可。 7.搜索增加了拆分模糊搜索,方便匹配更多搜索内容。 8.搜索结果增加红字高亮,交互更体贴。 9.搜索表单推荐改为get提交,防止浏览器返回报错bug。 10.短连接支持短横线。 20210428-zzzphp V2.0.4正式版 1.修复一处安全漏洞,请及时更新。 2.修复content循环不支持,编辑器类型参数显示代码的bug。 3.修复无法访问index.php的bug。 4.修复后台验证码时常验证无效的bug。 20210310-zzzphp V2.0.3正式版 1.修复百度编辑器远程图片自动下载功能失效的bug。 2.增加了水印功能,支持图片水印和文字水印。 3.水印支持设置九种位置,支持设置 4.图片水印支持透明度,支持jpg、gif和png格式。 5.文字水印大小自动跟随原图尺寸,自动设定。 6.文字水

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值