phpspreadsheet 导出 excel 表

本文介绍如何利用Composer和PHPSpreadsheet库实现从数据库提取信息并导出为Excel文件的过程,包括设置表头、固定列宽及数据写入等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

composer require phpoffice/phpspreadsheet

调用:

 //设置表头:
 $excel_title = ['前缀', '前6位', '省份', '城市', '运营商', 'post_code', 'city_code', 'area_code'];
 //数据中对应的字段,用于读取相应数据:
 $excel_filed = ['prefix', 'phone', 'province', 'city', 'isp', 'post_code', 'city_code', 'area_code'];
 $this->OfficeExport('订单表', $phoneinfo_sel_obj, $excel_title, $excel_filed);

导出方法:

/**
     * [OfficeExport  phpspreadsheet 导出excel表]
     * @Author           猴子年华、
     * @CreateTime       2019-03-15
     * @LatestUpdateTime 2019-03-15
     * @remark           [remark]
     * @copyright        [copyright]
     * @license          [license]
     * @version          [version]
     * @param            string      $excel_name  [ excel表的表名 ]
     * @param            array       $excel_data  [ 要导出excel表的数据,接受一个二维数组 ]
     * @param            array       $excel_title [ excel表的表头,接受一个一维数组 ]
     * @param            array       $excel_filed [ $data中字段名,接受一个一维数组 ]
     */
    public function OfficeExport($excel_name='测试表', $excel_data=[], $excel_title=[], $excel_filed=[])
    {
        try {
            $count       = count($excel_title);  //计算表头数量 
            $spreadsheet = new Spreadsheet();
            $sheet       = $spreadsheet->getActiveSheet();
            ob_clean();    //解决文件损坏
            $cellName = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'];

            /*---设置Excel title-------开始-----------*/
            $spreadsheet->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  导出时间:'.date('Y-m-d H:i:s'));
            foreach ($excel_title as $excel_title_key_one => $excel_title_val_one) {
                $sheet->setCellValue($cellName[$excel_title_key_one] . '1', $excel_title_val_one);
                $sheet->getColumnDimension($cellName[$excel_title_key_one])->setWidth(20); //固定列宽,表格宽度
            }
            /*---设置Excel title-------结束-----------*/

            /*---开始从数据库提取信息插入Excel表中-------开始-----------*/
            foreach ($data as $key => $item) {
                foreach ($excel_title as $excel_title_key_two => $excel_title_val_two) {  // 这里循环 excel_title 导出前,就不用再组装数据了
                    $sheet->setCellValue($cellName[$key] . ($key + 2), $item[$excel_filed[$excel_title_key]]); // 行写入,从第二行开始写
                    $sheet->getColumnDimension($cellName[$key])->setWidth(20); //固定列宽,表格宽度
                }
            }
            /*---开始从数据库提取信息插入Excel表中-------结束-----------*/

            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename="' . $excel_name . '.xlsx"');
            header('Cache-Control: max-age=0'); // 禁止缓存
            header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
            $writer = new Xlsx($spreadsheet);
            $writer->save('php://output');
            //删除清空:释放内存
            $spreadsheet->disconnectWorksheets();
            unset($spreadsheet);
            exit;
        } catch (Exception $e) {
            return false;
        }
    }

 

要使用PhpSpreadsheet导出Excel文件,你可以按照以下步骤进行操作: 1. 首先,实例化一个Spreadsheet对象,例如: ```php use PhpOffice\PhpSpreadsheet\Spreadsheet; $spreadsheet = new Spreadsheet(); ``` \[1\] 2. 接下来,设置文件的扩展名和格式,以及设置相应的HTTP头信息,例如: ```php $format = 'Xlsx'; // 设置文件格式为Xlsx或Xls if ($format == 'Xlsx') { header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); } elseif ($format == 'Xls') { header('Content-Type: application/vnd.ms-excel'); } $name = 'example'; // 设置文件名 header("Content-Disposition: attachment;filename=" . $name . '.' . strtolower($format)); header('Cache-Control: max-age=0'); ``` \[2\] 3. 创建一个Writer对象,并将Spreadsheet对象保存到输出流中,例如: ```php use PhpOffice\PhpSpreadsheet\IOFactory; $objWriter = IOFactory::createWriter($spreadsheet, $format); $objWriter->save('php://output'); ``` \[2\] 这样,你就可以通过PhpSpreadsheet导出Excel文件了。记得在保存文件之后使用`exit`函数来终止脚本的执行。 如果你想导出为xls文件,可以按照以下步骤进行操作: 1. 设置相应的HTTP头信息,例如: ```php header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); ``` \[3\] 2. 设置文件名和缓存控制,例如: ```php $filename = date('Y-m-d').'工作报告单'; header('Content-Disposition: attachment;filename='.$filename .'.xls'); header('Cache-Control:max-age=0'); ``` \[3\] 3. 创建一个Writer对象,并将Spreadsheet对象保存到输出流中,例如: ```php $write = IOFactory::createWriter($spreadsheet, 'Xls'); $write->save('php://output'); ``` \[3\] 这样,你就可以使用PhpSpreadsheet导出xls文件了。记得在保存文件之后使用`exit`函数来终止脚本的执行。 #### 引用[.reference_title] - *1* *3* [php使用PhpSpreadsheet导出Excel格详解](https://blog.youkuaiyun.com/weixin_44888397/article/details/131484139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PHP使用PhpSpreadsheet 导出excel文件](https://blog.youkuaiyun.com/huafengjie/article/details/130186773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值