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

2023-11-03

需求:每周一自动检测一个月内即将过期的用户,生成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;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PHP生成Excel文件并通过邮件发送 的相关文章

随机推荐

  • LaserScan数据转PointCloud2

    通过stage ros中rosbag record a记录的数据 里面的坐标系分别是odom gt gt base foot print gt gt base link gt gt base laser link 通过 rosrun tf
  • DBeaver设置背景色

    如图 设置sql编辑器背景色 方法 点击 窗口 gt 首选项 选择背景色 设置自定义颜色 最后应用并关闭
  • debounce与throttle实现与原理

    前言 前端时间在面试中 面试官让我写一个关于input输入框 并且实时搜索的问题 我就当然用keyup事件来写 写完面试官还是挺满意的 又问我一个问题 如何减少每次输入频繁请求的性能开销 这个我就犯难了 事后 我百度了下 查到了thrott
  • JS面试题整理

    1 JS的数据类型有哪些 它们是如何存储的 JavaScript一共有八种数据类型 其中分为基本数据类型和引用数据类型 基础数据类型 String Number Boolean Undefined Null Symbol ES6新增的数据类
  • 使用java读取execel

    需要下载jxl jar 去官网下载 代码如下 import java io import java util Scanner author Administrator version 1 0 Date 2011 06 07 java练习 p
  • ModelMatrix、ModelViewMatrix、ProjectionMatrix、NormalMatrix模型矩阵、模型视图矩阵、投影矩阵、正规矩阵详解

    ModelMatrix ModelViewMatrix ProjectionMatrix ModelMatrix模型矩阵 模型视图矩阵 投影矩阵 正规矩阵详解 1 前言 在openGL经常用到ModelMatrix ModelViewMat
  • 游戏盾可以防止DD和CC吗

    游戏盾是针对游戏行业专门研发的一款防DD和CC的产品 在市场上游戏盾不同与传统的单点抗D 它是由一个乃至多个高防节点池组成 每个节点池里面都是包含有成百上千个节点存在的 并且采用自主大数据和Anycast算法来实现智能调度 轻松将正常玩家和
  • 服务器 ping 不通有哪些原因导致的

    服务器 ping 不通有哪些原因导致的 太心急 即网线刚插到交换机上就想 Ping 通网关 忽略了生成树的收敛时间 当然 较新的交换机都支持快速生成树 或者有的管理员干脆把用户端口 access port 的生成树协议关掉 问题就解决了 某
  • 通过Git使用GitHub

    目录 一 建立个人仓库 二 配置SSH密钥 三 克隆仓库代码 四 推送代码到个人仓库 五 代码拉取 一 建立个人仓库 1 建立GitHub个人仓库 首先注册GitHub用户 注册好了之后 打开用户的界面 然后就是配置问题 配置好后拉到最下方
  • docker网络--多机通信--4--ingress笔记

    docker网络 多机通信 4 ingress 一 介绍 二 ingress网络 1 啥 2 增 3 删 4 改 5 查 三 ingress实验 1 说明 2 整体拓扑图 3 实验步骤 1 预置条件 2 步骤 4 原理说明 四 外部负载均衡
  • spring-bean的生命周期和怎么配置spring-bean的后置处理器

    前言 本章是spring基于XML 配置bean系类中第6篇讲解spring bean的生命周期和怎么配置spring bean的后置处理器 个人主页 尘觉主页 个人简介 大家好 我是尘觉 希望我的文章可以帮助到大家 您的满意是我的动力 在
  • 计算PI值到一亿位的算法 (转)

    计算PI值到一亿位的算法 转 more 我大体上考虑了一下用Delphi计算PI值到一亿位的算法 得到一个大体的算法 也好用来交流一下 这是一个构造一种新的长四则运算的算法 所谓长四则运算 是指用数据库的字段来作一个小数 用一个记录来作一个
  • 基于python的毕业设计仓库库存管理系统

    更多项目资源 最下方联系我们 目录 Python项目介绍 资料获取 Python项目介绍 计算机毕业设计python毕设项目之python仓库库存管理系统 IT实战课堂 哔哩哔哩 bilibili计算机毕业设计python毕设项目之pyth
  • 微信浏览器清理缓存的方法

    项目场景 项目包含电脑浏览器和手机的微信公众号两个部分 现在需要在微信端对项目进行测试 问题描述 在微信端打开项目的网页 发现某些部分的功能不如预期 退出微信并在服务器端进行修改 修改完成再次打开该网页 跟修改前的表现一样没有任何变化 原因
  • 企业u盘系统服务器,服务器u盘装系统

    服务器u盘装系统 内容精选 换一换 如果Linux操作系统云服务器未安装密码重置插件 可以参见本节内容重新设置密码 本节操作重置的是root用户的密码 您可以重置完root密码后登录云服务器后再更换秘钥或重置非root用户的密码 Windo
  • Group conv vs. Depthwise separable conv

    本王有话说 这俩属于是做轻量化绕不开的经典工作 盘踞武林好多年 我们的目标学会并企图超越它 分组卷积 Group conv paper 原理 分组卷积 即ResNeXt的亮点 受Inception和AlexNet的启发产生 Inceptio
  • 通过css样式定义span标签实现文本输入框功能

    span style width 200px height 24px line height 24px font size 14px padding 5px 8px border 1px solid ddd 我是文本输入框 span
  • TensorFlow学习过程记录 -- 问题解决

    在运行过程中 输出总是会产生两行警告信息 WARNING tensorflow From D python35 lib site packages tensorflow python util tf should use py 118 in
  • 机器学习中概率论知识复习

    机器学习先验知识概率论部分 发现看Machine Learning Andrew Ng 课程的时候中间有推导过程不是很明白 遂针对性复习 知识内容组织结构 参考 Probability Theory Review for Machine L
  • 使用PHP生成Excel文件并通过邮件发送

    需求 每周一自动检测一个月内即将过期的用户 生成excel2007文件 xlsx文件 并发送给指定的人员 做成一个脚本 使用定时任务即可解决 脚本分解为两步 生成Excel 发送邮件 一 生成Excel 使用简单的更改文件头 header