搜索
简帛阁>技术文章>thinkphp thinkadmin使用phpspreadsheet批量导出excel数据

thinkphp thinkadmin使用phpspreadsheet批量导出excel数据

由于PHPExcel早就停止更新维护,建议使用phpspreadsheet,本文就教你如何用PhpSpreadsheet导出excel
注:原生导出excel可以看我另一篇文章https://blog.csdn.net/qq_36303853/article/details/100283687

安装

1.环境要求:

PHP >= 5.6
	开启php_zip扩展
	开启php_xml扩展
	开启php_gd2扩展

2.使用composer安装,依次输入下面2条指令

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer require phpoffice/phpspreadsheet -vvv

3.安装成功

使用

1.先引入命名空间

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

2.封装方法

/**
 * 导出excel表
 * $data:要导出excel表的数据,接受一个二维数组
 * $name:excel表的表名
 * $head:excel表的表头,一维数组
 * $key:$data中对应表头的键的数组,一维数组
 * 备注:表头(对应列数)不能超过26;
 */
public function excel($name='表名', $data=[], $head=[], $keys=[])
{<!-- -->
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();

    // $sheet->getDefaultRowD$spreadsheet->getProperties()

    $sheet->setTitle($name);//设置当前工作表标题
    
    //设置表头
    foreach ($head as $key => $value) {<!-- -->
        $sheet->setCellValueByColumnAndRow($key+1, 1, $value);
    }

    //设置内容
    foreach ($data as $row=>$item) {<!-- -->
        foreach ($keys as $key=>$value) {<!-- -->
            $sheet->setCellValueByColumnAndRow($key+1, $row+2, $item[$value]);
        }
    }
    $writer = new Xlsx($spreadsheet);

    //合并单元格 合并后,赋值只能给A1,开始的坐标。
    // $sheet->mergeCells('A2:A3');//合并单元格
    //$sheet->mergeCellsByColumnAndRow(1,2,1,3);//使用数字单元格坐标合并单元格
    // $sheet->unmergeCellsByColumnAndRow(1,2,1,3);//使用数字单元格坐标拆分单元格

    //1.下载到服务器
    //$writer->save($name.'.xlsx');

    //2.输出到浏览器
    //header('Content-Type: application/vnd.ms-excel');//xls
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//xlsx
    header('Content-Disposition: attachment;filename="'.$name.'.xlsx"');
    header('Cache-Control: max-age=0');

    $writer->save('php://output');
    //删除清空:
    $spreadsheet->disconnectWorksheets();
    unset($spreadsheet);
    exit;
}

3.简单的使用

  • 前端html
{if auth("export")}
<a class="layui-btn layui-btn-sm" href="{:url('index')}?{$_SERVER['QUERY_STRING']}&export=1">导 出</a>
{/if}
  • 后端代码
use app\common\controller\Common;

/**
 * 作业人员列表管理
 * @auth true
 */
public function index()
{<!-- -->
    $this->title = '作业人员列表管理';
    $query = $this->_query($this->table)
        ->order('create_at desc,id desc');
    if (request()->get('export')) {<!-- -->
        $query->page(false);
    } else {<!-- -->
        $query->page();
    }
}
//列表数据回调
protected function _index_page_filter(&$data)
{<!-- -->
    //导出数据
    if (request()->get('export')) {<!-- -->
        $name = date('Y-m-d') . '人员列表信息';
        $head = ['ID', '姓名', '添加时间'];
        //数据中对应的字段,用于读取相应数据:
        $keys = ['id', 'name', 'create_at'];
        Common::export($name, $data, $head, $keys);
    }
}

其他具体使用

https://blog.csdn.net/gc258_2767_qq/article/details/81003656

如果你也学php可以点个关注,我会不定期更新文章,给个赞,支持一下,过程有遇到什么问题也欢迎评论私信,进行交流

由于PHPExcel早就停止更新维护,建议使用phpspreadsheet,本文就教你如何用PhpSpreadsheet导出excel注:原生导出excel可以看我另一篇文章https://blog
:演示的页面前端我用的layui框架,前端这些样式细节我并没有详细说明,这篇文章主要说的是后端一些细节关联文章phpspreadsheet的安装和批量导出excel数据https://blogcsd
由于PHPExcel已经不再维护,PhpSpreadsheet是PHPExcel的下一个版本。PhpSpreadsheet是一个用纯PHP编写的库,并引入了命名空间,PSR规范等。这里简单介绍下Php
引用类:usePhpOffice\PhpSpreadsheet\IOFactory;usePhpOffice\PhpSpreadsheet\Cell\Coordinate;usePhpOffice\P
之前我们使用PHP导出Excel数据使用的是PHPExcel库,但是phpoffice已经官方宣布PHPExcel已经被废弃不在维护,推荐使用phpspreadsheet,如下图所示我们可以通过co
简便方法:使用PHP原生导出Excel和CSV文件|LaravelChina社区usePhpOffice\PhpSpreadsheet\Spreadsheet;usePhpOffice\PhpSpre
第一步:下载官方的PHPExcel文件,下载地址https://githubcom/PHPOffice/PHPExcel第二步:解压打开,将PHPExcel\Classes\全部文件拷贝到thinkh
■☞背景最近在后台业务需求中又涉及到了Excel表的导入导出正要参考以前整理的文章——【ThinkPHP51excel表的导入导出操作(PHPExcel)】但是发现,好多道友早就提示了PHPExcel
PHP对Excel导入&导出操作最近公司要做报表功能,各种财务报表、工资报表、考勤报表等,复杂程度让人头大,于是特地封装适用各大场景的导入&导出操作,希望各界大神支出不足之处,以便小弟继续完善。php
单个sheet页Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。Excel2003的最大列数是256列,2007以上版本是16384列。xlswr