千家信息网

PHP怎么导出报表

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍"PHP怎么导出报表",在日常操作中,相信很多人在PHP怎么导出报表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PHP怎么导出报表"的疑惑有所帮助!接
千家信息网最后更新 2025年12月02日PHP怎么导出报表

这篇文章主要介绍"PHP怎么导出报表",在日常操作中,相信很多人在PHP怎么导出报表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PHP怎么导出报表"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

效果



需求

为了实现报表效果,自己杜撰的需求。

主要是思路,思路通了实现其他效果也OK。

统计每个人在一年中每一天迟到早退的情况。

思路

PHP 语言进行实现。

首先将报表样式用 HTML 实现,

然后利用PHP header 函数生成 xls 下载。

知识点

  • 表格中的列合并与行合并

  • PHP 获取一年中的每一天进行展示

  • PHP header 函数

  • Smarty 模板函数

  • Smarty 自定义函数

  • ...

PHP 代码

public function export(){    //获取2016年日期    $time_start = strtotime('2016-01-01');    $time_end   = strtotime('2016-12-31');    $month_arr = [];    $month_arr['month'][]   = '2016-01';    $month_arr['numbers'][] = date('t',$time_start); //获取天数    while (($time_start = strtotime('+1 month', $time_start)) <= $time_end) {        $month_arr['month'][]   = date('Y-m',$time_start); //取得递增月        $month_arr['numbers'][] = date('t',$time_start);     //获取天数    }    function check_week($time = [])    {        if (empty($time['day'])) {            return '';        }        $w = intval(date('w' , strtotime($time['day'])));        if( $w === 0 || $w === 6){            return ''
.date('d', strtotime($time['day']))
.''; } return ''.date('d', strtotime($time['day'])).''; } //向模板中注册一个函数 $this->smarty->registerPlugin('function','check_week','check_week'); //模拟数据如下: $list[0]['name'] = 'Tom'; $list[1]['name'] = 'Joan'; $list[0]['sex'] = '男'; $list[1]['sex'] = '女'; $list[0]['age'] = '30'; $list[1]['age'] = '31'; //设置迟到 $list[0]['late'] = [ '2016-01-08', '2016-01-09', '2016-02-09', '2016-03-09', '2016-04-09', '2016-05-09' ]; $list[1]['late'] = [ '2016-02-12', '2016-03-15', '2016-04-13', '2016-05-19', '2016-05-19' ]; //设置早退 $list[0]['leave'] = [ '2016-03-09', '2016-04-11', '2016-05-15', '2016-06-18', '2016-07-21', '2016-08-23', '2016-09-22', '2016-10-20', '2016-11-17', '2016-12-14', ]; $list[1]['leave'] = [ '2016-05-09', '2016-06-11', '2016-07-13', '2016-08-15', '2016-09-17', '2016-10-19', '2016-11-20', '2016-12-23', '2016-03-18', '2016-02-19', '2016-01-23', ]; $file_name = "报表-".date("YmdHis",time()); $file_suffix = "xls"; header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=$file_name.$file_suffix"); $this->_assign('list', $list); $this->_assign('month', $month_arr); $this->_display();}

HTML 代码

                    {if $month}            {foreach $month.month as $k=>$m}                            {/foreach}        {/if}            {if $month}        {foreach $month.month as $k=>$m}            {section name=count loop=$month.numbers.$k+1 start=1}                {check_week day=$m|cat:"-"|cat:$smarty.section.count.index}            {/section}        {/foreach}        {/if}        {if $list}    {foreach $list as $s}            {if $month}        {foreach $month.month as $k=>$m}            {section name=count loop=$month.numbers.$k+1 start=1}                {if $smarty.section.count.index <10 }                     {$str = ""}                     {$smarty.section.count.index = $str|cat:"0"|cat:$smarty.section.count.index}                {/if}                            {/section}        {/foreach}        {/if}        {/foreach}        {/if}

姓名

性别

年龄

{$m}
{$s.name|default:'--'} {$s.sex|default:'--'} {$s.age|default:'--'} {if $s['late']} {if ($m|cat:"-"|cat:$smarty.section.count.index)|in_array:$s['late']} 1 {/if} {/if} {if $s['leave']} {if ($m|cat:"-"|cat:$smarty.section.count.index)|in_array:$s['leave']} 1 {/if} {/if}
*周末
*正常
*迟到
*早退

到此,关于"PHP怎么导出报表"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

报表 函数 学习 思路 效果 代码 天数 更多 模板 知识 需求 帮助 实用 接下来 姓名 年龄 性别 情况 数据 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 怎么调查数据库 做好网络安全风险隐患排查 宁波海葵网络技术 新能源汽车电池软件开发 计算机网络安全信息的概念股 不属于网络安全基础 支付宝中国网络技术有限公司上市 小学生网络安全情景剧校园剧 信通建互联网科技有限公司怎么样 网络安全产品是什么 闵行区推广软件开发价格对比 网络安全金库模式的作用 软件开发在哪里卖钱 数据库系统工程师考试大纲第三版 襄阳软件开发好多 周口用友软件开发 乌鲁木齐软件开发前十公司 服务器水冷管理 互联网科技强势入驻华北区 一个登录页面的数据库 帮人买服务器犯法吗 网络安全收集信息 sci数据库检索三种方式 信安签名服务器验签失败 更改注册表中的数据库 数据库综合实验百度文库 云南计算机网络技术专升本分数线 聊呗自动抢红包软件开发 医药进销存管理无法连接数据库 海康威视服务器平台配置视频教程
0