PHP基础巩固【PHP导入导出EXCEl,TP实用封装函数,可定义表格样式】

2023-11-11

这个方法是自己封装了,方法确实也好用,自己也用了好几年了

但是最近发现好多小年轻用到都是PhpOffice,咱也应该与时俱进,就先把这方法分享出来,等熟悉下phpoffice再贴出更新后的版本

把以下代码写入公共函数


/**
 * 导入EXCEL
 * @param file 需导入的文件
 */
function GetExcel($file){
    ini_set('max_execution_time', '0');
    if(empty($file) or !file_exists($file)){return false;}
    import('phpexcel.PHPExcel', EXTEND_PATH);
    $objPHPExcel = new \PHPExcel();      
    $type = pathinfo($file); 
    $type = strtolower($type["extension"]);   
    $type = $type==='csv' ? $type : 'Excel2007';     
    $PHPReader = new \PHPExcel_Reader_Excel2007();
    $objPHPExcel = $PHPReader->load($file);    
    $sheet = $objPHPExcel->getSheet(0); 
    $allColumn = $sheet->getHighestColumn();   
    $allRow = $sheet->getHighestRow();      
    $ColumnNum = PHPExcel_Cell::columnIndexFromString($allColumn);    
    $data = array();
    for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){     
        for($colIndex=0;$colIndex<=$ColumnNum;$colIndex++){
            $data[$rowIndex][] =(string)$sheet->getCellByColumnAndRow($colIndex, $rowIndex)->getValue();  
        }
    }
    return $data; 
}


/**
 * 导出EXCEL
 * @param titary 标题
 * @param list 数据
 * @param styleary 单元格长度
 */
function Toexcel($titary, $list, $styleary = array())
{
    $charary = array(0 => "A", 1 => "B", 2 => "C", 3 => "D", 4 => "E", 5 => "F", 6 => "G", 7 => "H", 8 => "I", 9 => "J", 10 => "K", 11 => "L", 12 => "M", 13 => "N", 14 => "O", 15 => "P", 16 => "Q", 17 => "R", 18 => "S", 19 => "T", 20 => "U", 21 => "V", 22 => "W", 23 => "X", 24 => "Y", 25 => "Z");
    import('phpexcel.PHPExcel', EXTEND_PATH);
    $objPHPExcel  = new \PHPExcel();
    $sharedStyle1 = new \PHPExcel_Style();
    $borders      = array(
        'left'   => array('style' => \PHPExcel_Style_Border::BORDER_MEDIUM),
        'right'  => array('style' => \PHPExcel_Style_Border::BORDER_MEDIUM),
        'top'    => array('style' => \PHPExcel_Style_Border::BORDER_MEDIUM),
        'bottom' => array('style' => \PHPExcel_Style_Border::BORDER_MEDIUM),
    );
    $sharedStyle1->applyFromArray(
        array(
            'font'    => array(
                'bold'  => true,
                'type'  => \PHPExcel_Style_Color::COLOR_DARKGREEN,
                'color' => array(
                    'argb' => '00000000'
                )
            ),
            'borders' => $borders,
            'fill'    => array(
                'type'       => \PHPExcel_Style_Fill::FILL_SOLID,
                'startcolor' => array(
                    'argb' => '00CCCCCC'
                )
            )
        )
    );
    $sharedStyle40 = new \PHPExcel_Style();
    $sharedStyle40->applyFromArray(
        array(
            'font'    => array(
                'type'  => \PHPExcel_Style_Color::COLOR_DARKGREEN,
                'color' => array(
                    'argb' => '00000000'
                )
            ),
            'borders' => $borders
        )
    );

    $lastitem = $charary[count($list["tit"]) - 1];
    $item     = 1;
    foreach ($titary as $key => $val) {
        $objPHPExcel->getActiveSheet()->getRowDimension($item)->setRowHeight(30);
        $objPHPExcel->getActiveSheet()->setCellValue('A' . $item, $val);
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->mergeCells('A' . $item . ':' . $lastitem . '' . $item);
        $item++;
    }

    $objPHPExcel->getActiveSheet()->getDefaultColumnDimension('A')->setWidth(15);
    $objPHPExcel->getActiveSheet()->getRowDimension($item)->setRowHeight(30);

    $tempary = [];
    foreach ($list["tit"] as $k => $v) {
        $tempary[] = $k;
    }
    foreach ($tempary as $k => $v) {
        if (isset($styleary[$v])) {
            $objPHPExcel->getActiveSheet()->getColumnDimension($charary[$k])->setWidth($styleary[$v]);
        }
        $objPHPExcel->getActiveSheet()->setCellValueExplicit($charary[$k] . $item, $list["tit"][$v], \PHPExcel_Cell_DataType::TYPE_STRING);
        $objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, $charary[$k] . $item);
    }
    unset($list["tit"]);
    $item++;
    foreach ($list as $key => $row) {
        $objPHPExcel->getActiveSheet()->getRowDimension($item)->setRowHeight(30);
        foreach ($tempary as $k => $v) {
            $objPHPExcel->getActiveSheet()->setCellValueExplicit($charary[$k] . $item, $row[$v], \PHPExcel_Cell_DataType::TYPE_STRING);
            $objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle40, $charary[$k] . $item);
        }
        $item++;
    }
    // $objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A1:".$lastitem.($item-1));
    $objPHPExcel->setActiveSheetIndex(0)->getStyle("A1:" . $lastitem . ($item - 1))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->setActiveSheetIndex(0)->getStyle("A1:" . $lastitem . ($item - 1))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
    $file_name = date('YmdHis') . '.xls';
    ob_end_clean();
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:applicationnd.ms-execl");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");
    header("Content-Disposition:attachment; filename=" . $file_name);
    header("Content-Transfer-Encoding:binary");
    $objWriter->save('php://output');
    exit;
}

导出的可能有些朋友没看明白,这里贴出调用代码

$titary      = array("导出标题");
$list["tit"] = array(
    "name"     => "分组1",
    "number"   => "数量",
);
$styleary = array(
    "name" => 20
);
Toexcel($titary,$list,$styleary);

 

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

PHP基础巩固【PHP导入导出EXCEl,TP实用封装函数,可定义表格样式】 的相关文章

  • PHP 中的encodeURI() ?

    PHP 中是否有一些不编码的encodeURI 函数 我现在用这个 function encodeURI url http php net manual en function rawurlencode php https develope
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • Readfile 从大文件中读取 0 字节?

    我正在尝试通过以下方式发送一个大文件readfile 但是 没有任何内容发送到浏览器 并且readfile 回报0 not false 我尝试发送的文件大小为 4GiB 并且可由 PHP 读取 我正在设置set time limit 0 以
  • Symfony2:为什么请求传递到受 Symfony2 中 AppCache 影响的 Kernel.Terminate EventListener

    在我的 Symfony2 2 应用程序中 我使用 onKernelTerminate EventListener 以便我可以在渲染响应后进行一些 繁重 处理 以便用户收到更快的响应时间 在我的控制器中 我在请求上设置了一个属性 以便当事件侦
  • 选择一组数字以达到最小总数的算法

    给定 一组数字n 1 n 2 n 3 n x 还有一个数字M 我想找到最好的组合 n a n b n c n gt M 该组合应达到达到或超过 M 所需的最小值 没有其他组合可以提供更好的结果 将在 PHP 中执行此操作 因此可以使用 PH
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 尝试使用 php 发送 POST 请求,无论我做什么,我都会收到“HTTP ERROR 500”

    为了发出 HTTP 请求 有人建议我尝试使用 PHP 并给了我一段代码 url https example com dashboard api data array to gt PHONE NUMBER from gt SENDER ID
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 从类似 cronjob 的语法创建“下次运行时间”日期

    在我正在创建的应用程序中 用户可以安排重复任务 生成间隔模式的简单值是 Minute 0 59 90 each minute Hour 0 23 90 each hour Day of month 1 31 90 each day of m
  • WordPress 包含 SVG 文件错误

    我使用 PHP 和 WordPress 在本地主机上 我可以毫无问题地包含 SVG 文件 但在实时服务器上 我尝试包含一个 SVG 文件以便能够使用 CSS 对其进行样式设置 我收到此错误消息 Parse error syntax erro
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • Facebook PHP SDK - 如何获取访问令牌?

    我正在尝试从我的应用程序在用户的 Facebook 墙上发帖 用户授予应用程序在他的墙上发布的权限 并且我在数据库中有用户ID 我需要自动发送帖子 而无需用户再次登录 我的代码是 try require once dirname FILE
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据
  • 使用 crypt() 加密

    我目前正在做一个非常安全的登录系统 但我是 crypt 函数的新手 需要一些快速帮助 我在注册过程中使用 crypt 加密密码字符串并将其保存到数据库中 但是 我如何在登录过程中解密密钥 或者我应该怎么做 或者是否可以对提交的密码字符串进行

随机推荐

  • 【数据库CS751】Union的用法以及含义

    目录 一 Union的含义 二 Union的用法 1 列数一样 这个很重要 2 union与union all 3 union可以排序么 4 别名会影响union么 那么别名会不会影响排序 那么之前说过了各种连接 其实union本质上还是和
  • Backup database plus archivelog delete input;

    Backup database plus archivelog 会备份归档日志Backup database plus archivelog delete input 会备份归档日志并且会在备份结束后删除默认目录下的归档日志 datafil
  • PAT C入门题目-7-17 成绩转换 (15 分)(switch-case)

    7 17 成绩转换 15 分 本题要求编写程序将一个百分制成绩转换为五分制成绩 转换规则 大于等于90分为A 小于90且大于等于80为B 小于80且大于等于70为C 小于70且大于等于60为D 小于60为E 输入格式 输入在一行中给出一个整
  • Python 学习4.1字典

    一 字典内包含的内容是一系列键和它们对应的值 字典放在花括号 中 键和值之间用冒号 分隔 键值对之间用 分隔 想储存多少键值对都可以 eg 输入 a zwj 250 zzy 251 250 zwj print a zwj print a 2
  • 神经网络容易受到对抗攻击,网络攻防原理与技术

    1 信息化战争的作战原则是什么 三项基本原则 一是隐蔽 二是快速 三是高效 隐蔽 就是通过隐身 欺骗等手段 确保 先敌发现 先敌攻击 快速 就是依托情报监视与侦察和快速打击系统 确保 发现即摧毁 高效 就是联合 集中使用高能精确弹药 确保战
  • 2023年大数据面试通关文牒系列篇

    大数据面试通关文牒系列篇 第二篇 Hadoop生态链 Round 1 HIVE HIVE 基础篇 1 Hive内部表和外部表的区别 未被external修饰的是内部表 被external修饰的为外部表 区别 内部表数据由Hive自身管理 外
  • python识别_Python手势识别与控制

    Python手势识别与控制 概述 本文中的手势识别与控制功能主要采用 OpenCV 库实现 OpenCV是一个基于BSD许可 开源 发行的跨平台计算机视觉库 可以运行在Linux Windows Android和Mac OS操作系统上 它轻
  • Linux - Centos7 搭建 JAVA 环境,安装 MAVEN

    一 下载 MAVEN 1 到官方网址下载 http maven apache org download cgi 2 下载好后 使用 FTP 类软件 将下载好的本地文件上传到 Linux 服务器上来 我使用的是 PSFTP 如果想试试这个软件
  • go语言实战-----25-----HTTP编程get/post/head、表单处理、panic处理

    一 HTTP编程get post head 1 HTTP编程 1 Go原生支持http import net http 即可 2 Go的http服务性能和nginx比较接近 3 几行代码就可以实现一个web服务 1 1 HTTP常见请求方法
  • vue插件开发以及发布

    vue插件开发
  • 关于串口通信思考

    如何给串口通信口增加LED灯作为通信指示灯 以下给出2种电路设计参考 第一种 第二种 思考 以上哪种电路更优 为什么 第一种电路 LED灯使用共阴极连接 这种方法有什么好处呢 就是在TX在高电平情况下会点亮二极管 低电平情况下不会 这个问题
  • 刷脸支付成为全球科技巨头们主攻研发方向

    相对于已经熟悉的二维码支付 一些民众对于刷脸支付是否安全表示担忧 蚂蚁金服资深算法专家李亮表示 通过软硬件的结合 智能算法与风控体系综合保证准确性和安全性 目前识别的准确率为99 99 而扫码极易植入木马和钓鱼软件 反而存在更大的安全隐患
  • [人工智能-深度学习-78]:开发环境 - pip install cv2下载失败的解决办法

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122320433 目录 1 出错现象
  • TypeScript 枚举使用整理

    一 定义 enum 使用枚举我们可以定义一些有名字的数字常量 枚举通过enum关键字定义 枚举的定义和C 中有些类似 enum Direction Up 1 Down Left Right console info Direction co
  • java.lang.StackOverflowError出现的原因

    严重 Exception initializing page context java lang StackOverflowError at javax servlet http HttpServletRequestWrapper getS
  • sys.argv和argparse和os.environ/python命令行中键入参数的三种方式

    参考 命令行运行Python脚本时传入参数 3种方法 https blog csdn net helloasimo article details 124210144 x 1 sys argv sys argv类似于c中main函数中的ar
  • 区块链技术发展面临七大关键挑战以及未来的五大展望

    经过十多年的发展 区块链技术逐渐走入大众视野 并融入各行各业的建设中 今年国家也首次将区块链技术纳入新基建的范畴 近日 梳理了区块链技术的基础架构 扩展技术 挑战 并对未来区块链技术的发展进行展望 随着对区块链技术价值的发掘 区块链技术逐渐
  • 【玩转数据系列十六】机器学习PAI通过声音分辨男女(含语音特征提取相关数据和代码)...

    背景 随着人工智能的算法发展 对于非结构化数据的处理能力越来越受到重视 这里面的关键一环就是语音数据的处理 目前 许多关于语音识别的应用案例已经影响着我们的生活 例如一些智能音箱中利用语音发送指令 一些搜索工具利用语音输出文本代替键盘录入
  • Java基础——语法

    1 变量与数据类型 1 1 标识符 命名规范参考Java开发手册 嵩山版 Java对包 类 方法 参数和变量等要素命名时使用的字符序列称为标识符 命名规则如下 由字母 数字 下划线 和美元符号 组成 不能以数字开头 区分大小 长度无限制 不
  • PHP基础巩固【PHP导入导出EXCEl,TP实用封装函数,可定义表格样式】

    这个方法是自己封装了 方法确实也好用 自己也用了好几年了 但是最近发现好多小年轻用到都是PhpOffice 咱也应该与时俱进 就先把这方法分享出来 等熟悉下phpoffice再贴出更新后的版本 把以下代码写入公共函数 导入EXCEL par