首页 > 编程语言 >简单封装PhpSpreadsheet,实现PHP快速导入、导出xlsx

简单封装PhpSpreadsheet,实现PHP快速导入、导出xlsx

时间:2023-12-09 12:35:02浏览次数:43  
标签:xlsx Spreadsheet getHighestColumn PhpSpreadsheet start param PHP data

简单封装PhpSpreadsheet,实现PHP快速导入、导出xlsx

<?php

namespace xfstu\tools;

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;

/**
 * @method export(array $field, array $data) 简单封装导出xlsx
 * @method getFileArray(string $fileName, int $start = 2, string $getHighestColumn = 'auto') 简单封装读取xlsx
 */
class ToolsXlsx
{
    public $Spreadsheet;

    public function __construct()
    {
        $this->Spreadsheet = new Spreadsheet();
    }

    /**
     * 导出二维数组到xlsx
     * @param array $field 字段名称
     * @param array $data 数据
     */
    public function export($field, $data)
    {
        $Spreadsheet = $this->Spreadsheet;
        $sheet = $Spreadsheet->getActiveSheet();
        $sheet->getStyle('A1:I' . (count($data) + 1))->getFont()->setName('宋体');
        $fieldABC = range('A', 'Z');
        foreach ($field as $k => $v) {
            $sheet->setCellValue($fieldABC[$k] . '1', $v)->getColumnDimension($fieldABC[$k])->setAutoSize(TRUE);
        }
        $i = 1;
        foreach ($data as $rk => $row) {
            $i++;
            foreach ($field as $k => $v) {
                foreach ($row as $key => $value) {
                    $sheet->setCellValue($fieldABC[$k] . $i, $value);
                }
            }
        }
        $writer = new Xlsx($Spreadsheet);
        return $writer->save('php://output');
        return $writer;
    }

    /**
     * 读取xlsx
     * @param string $fileName
     * @param int $start
     * @param string $getHighestColumn
     * @return array
     */
    public function getFileArray($fileName, $start = 2, $getHighestColumn = 'auto')
    {
        $spreadsheet = IOFactory::load($fileName);
        $worksheet = $spreadsheet->getActiveSheet();
        $highestRow = $worksheet->getHighestRow();
        $highestColumn = $getHighestColumn == 'auto' ? $worksheet->getHighestColumn() : $getHighestColumn;
        $data = [];
        for ($start; $start <= $highestRow; ++$start) {
            $rows = $worksheet->rangeToArray('A' . $start . ':' . $highestColumn . $start, null);
            $data[] = $rows[0];
        }
        return $data;
    }
}

标签:xlsx,Spreadsheet,getHighestColumn,PhpSpreadsheet,start,param,PHP,data
From: https://www.cnblogs.com/xfstu/p/17890758.html

相关文章

  • php 5.6
    返回值(语法)Nginx、php5.6+中打开⽹网站⾸首⻚页,显示:APHPErrorwasencounteredSeverity:NoticeMessage:OnlyvariablereferencesshouldbereturnedbyreferenceFilename:core/Common.phpLineNumber:257解决⽅方法:打开system/core/Common.php//将return$_c......
  • PHP获取浏览器,PHP获取IP地址,PHP获取设备型号
    <?php//获取浏览器functionget_broswer(){$sys=$_SERVER['HTTP_USER_AGENT'];//获取用户代理字符串$exp[0]="未知浏览器";$exp[1]="";//stripos()函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)preg_match()执行匹配正则表达......
  • JetBrains PhpStorm 2023.3 (macOS, Linux, Windows) - 高效智能的 PHP IDE
    JetBrainsPhpStorm2023.3(macOS,Linux,Windows)-高效智能的PHPIDE请访问原文链接:https://sysin.org/blog/jb-phpstorm-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsPhpStorm-高效智能的PHPIDE为什么选择PhpStorm享受高效的PHP观......
  • php运行流程
    SAPI运行PHP都经过下面几个阶段:1、模块初始化阶段(Moduleinit):即调用每个拓展源码中的的PHP_MINIT_FUNCTION中的方法初始化模块,进行一些模块所需变量的申请,内存分配等。2、请求初始化阶段(Requestinit):即接受到客户端的请求后调用每个拓展的PHP_RINIT_FUNCTION中......
  • Ubuntu安装PHP和NGINX环境
    Ubuntu安装PHP和NGINX环境介绍PHP-FPMPHP-FPM是PHPFastCGIProcessManager的缩写,是FastCGI进程管理器。PHP-FPM是基于master/worker的多进程架构模式,与nginx的设计风格类似。master进程主要负责CGI、PHP环境初始化,事件监听、子进程状态,worker进程负责处理PHP......
  • wamp修改站点路径,php服务器修改路径
    一、修改apache目录下载好WampServer后,它默认网站根目录是:“D:/wamp/www”(示例若不同点击右下角的wampserver有个www目录即默认网站根目录)打个比方,我现在要把网站根目录改为“E:/study”1.打开 D:\wamp\bin\apache\apache2.4.23\conf(本机示例)中的httd.conf......
  • PHP+JS实现大文件切片上传功能实现实例源码
    近期公司的项目中,涉及到上传大文件的问题,大文件上传用普通表单上传时出现的问题是,无法断点续存,一但中途中断上传,就要重头开始,这很明显不是我们想要的,所以经过一番查询,学习了一下大文件分割上传的方法。并且使用简单的php做服务端处理程序实现一个功能demo,供以后回顾使用。本人也是......
  • 2023最新初级难度PHP面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-初级难度PHP面试题合集问:请解释什么是PHP?PHP是一种开源的脚本语言,用于开发动态网站和Web应用程序。它是一种嵌入HTML中的语言,可以用来执行简单的任务,例如显示特定的图形或记录访客人数等。它可以轻松地插入到HTML页面中,并且支......
  • 2023最新中级难度PHP面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度PHP面试题合集问:请问如何在PHP中自定义魔术方法,例如__call()和__callStatic()?在PHP中,可以通过重写魔术方法来实现自定义行为。例如要实现自定义__call()方法,可以在类中定义一个名为__call的方法:classMyClass{......
  • php:对象运行时新增成员变量
    简单到无以复加...1classA_test{23}45$obj=newA_test();6$objSupplyProp="abc";7$obj->$objSupplyProp=123;89var_dump($obj->$abc); 但是动态声明添加成员变量带来一个问题,ide无法有效识别。那么需要通过注释来解决这个问题:1/**2*@prop......