zoukankan      html  css  js  c++  java
  • phpspreadsheet导出数据到Excel

    之前我们使用PHP导出Excel数据时使用的是PHPExcel库,但是phpoffice已经官方宣布PHPExcel已经被废弃不在维护,推荐使用phpspreadsheet,如下图所示

    我们可以通过composer安装phpspreadsheet

    composer require phpoffice/phpspreadsheet
    

    使用phpspreadsheet导出学生信息到浏览器代码示例

    /**
     * 输出到浏览器(需要设置header头)
     * @param string $fileName 文件名
     * @param string $fileType 文件类型
     */
    function excelBrowserExport($fileName, $fileType) {
    
        //文件名称校验
        if(!$fileName) {
            trigger_error('文件名不能为空', E_USER_ERROR);
        }
    
        //Excel文件类型校验
        $type = ['Excel2007', 'Xlsx', 'Excel5', 'xls'];
        if(!in_array($fileType, $type)) {
            trigger_error('未知文件类型', E_USER_ERROR);
        }
    
        if($fileType == 'Excel2007' || $fileType == 'Xlsx') {
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="'.$fileName.'.xlsx"');
            header('Cache-Control: max-age=0');
        } else { //Excel5
            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename="'.$fileName.'.xls"');
            header('Cache-Control: max-age=0');
        }
    }
    
    $data = [
        [1, 'jack', 10],
        [2, 'mike', 12],
        [3, 'jane', 21],
        [4, 'paul', 26],
        [5, 'kitty', 25],
        [6, 'yami', 60],
    ];
    
    $title = ['id', 'name', 'age'];
    
    $spreadsheet = new Spreadsheet();
    $worksheet = $spreadsheet->getActiveSheet();
    
    //设置工作表标题名称
    $worksheet->setTitle('工作表格1');
    
    //表头
    //设置单元格内容
    foreach ($title as $key => $value) {
        $worksheet->setCellValueByColumnAndRow($key+1, 1, $value);
    }
    
    $row = 2; //从第二行开始
    foreach ($data as $item) {
        $column = 1;
    
        foreach ($item as $value) {
            $worksheet->setCellValueByColumnAndRow($column, $row, $value);
            $column++;
        }
        $row++;
    }
    
    
    $fileName = '学生信息';
    $fileType = 'Xlsx';
    
    //1.下载到服务器
    //$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
    //$writer->save($fileName.'.'.$fileType);
    
    //2.输出到浏览器
    $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); //按照指定格式生成Excel文件
    excelBrowserExport($fileName, 'Xlsx');
    $writer->save('php://output');
    

    导出结果如图所示:

    参考:
    phpSpreadsheet 试用demo

  • 相关阅读:
    redis介绍
    多线程学习
    hashMap,hashTable,TreeMap,concurrentHashMap区别
    HashMap实现原理
    ArrayList,LinkedList,Vector区别.TreeSet,TreeSet,LinkedHashSet区别
    List与Set区别
    转:java身份证格式强校验
    RedisUtil: Jedis连接自动释放
    MySQL 相邻两条数据相减
    java 将byte[]转为各种进制的字符串
  • 原文地址:https://www.cnblogs.com/itbsl/p/10369695.html
Copyright © 2011-2022 走看看