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实用封装函数,可定义表格样式】 的相关文章

随机推荐

  • 【数据库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