使用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文件并通过邮件发送 的相关文章

  • 按通用值对值进行分组:userid 和 ipaddress

    我正在解决数据库中的一个问题 我正在尝试查找使用多个帐户的用户 我有一个用户 ID 和使用的 IP 地址的列表 如下所示 用户 ID IP 地址 1 IP 地址 13 2 IP 地址 23 1 IP 地址 12 4 IP地址56 9 IP
  • 自定义 WP 主题时,我应该将导航栏放在“”标签之前还是之后?

    我正在通过制作子主题来自定义 WP 主题 我将 Bootstrap 中的导航栏放入子主题目录中的 header php 文件中 但是 我不确定在哪里放置导航栏代码 我可以把它都放在前面and之后标记成功 例如 无论我选择哪一个 导航栏都显示
  • Smarty输出空白页

    已解决 模板文件错误 我有这样的 Smarty 设置 require once smarty Smarty class php smarty new Smarty smarty gt compile dir compile dir smar
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • 在值中包含换行符

    我有一个 Word 模板 其中 php 代码中定义了值 在PHP代码中 document gt setValue Value1 value1 在word模板中 Value1 如何将包含两个值之间的断线的值包含在单词的值中 Replace n
  • 从 octobercms 中的非 ajax 表单获取输入值

    我正在尝试构建一个简单的搜索功能 下面是我的搜索表格
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • PHP 开发相当于 Mongrel/Webrick 吗?

    PHP 开发中是否有与 Rails 开发期间使用 Mongrel Webrick 等效的方法 我通常在端口 3000 上使用 Mongrel 在开发过程中为我的 Rails 应用程序提供服务 我从事 PHP 开发已经有几年了 据我所知 方法
  • 如何将 HTML 转换为 Markdown?

    我有一个类似 stackoverflow 的网站 有一个文本区域 人们可以在其中写答案 我用这个 PHP 库 http parsedown org 转换降价 我的意思是我使用该函数来转换 italic to i italic i inclu
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • 如何解码 eval( gzinflate( base64_decode(

    我已将此代码注入到我的网站中 如何解码尾随字符串 我需要知道发生了什么以及其背后的代码是什么 这应该输出将被执行的代码eval 我希望这就是您正在寻找的
  • Magento - 检查 cms 页面

    我想通过 php 检查页面是否是 Magento 中的 cms page 我需要不同的 cms 页面面包屑 所以我尝试在一个条件下做到这一点 但我不知道如何或在哪里查看 到目前为止 这是我的 breadcrumbs phtml p some
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 使用 XSLT 将 XML 转换为 SQL

    由于我无法控制的原因 我将获得一个 XML 文件和一个 XSLT 文件 该文件可以将 XML 文件转换为 SQL 代码或错误 现在让我们假设我们可以信任提供 XML 文件的人不会在 XML 中包含危险的构造 我什至不知道是否应该使用 Sim
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2

随机推荐

  • 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