当前位置: 首页 > 工具软件 > php-xls > 使用案例 >

PHPExcel 导出excel(xls)

刘棋
2023-12-01

PHPExcel 导出excel(xls)

下次用就可以直接粘代码了
上一次用是在tp5.0

/**
     * PHPExcel 导出
     *
     * @param array $field 表格第一行的表格 格式:['name'=>'名字','数据库字段名1'=>'显示的名称1',...]
     * @param array $list 数据 格式: 二维数组,第一层键为数字,第二层键为字段名
     * @param string $title 导出的文件名称
     */
    public function phpExcelList($field, $list, $title = '文件')
    {
        // 将标题转码
        iconv('utf-8', 'gbk', $title);
        // 引入   等价于 PHPExcel/PHPExcel
        vendor("PHPExcel.PHPExcel");
        $objPHPExcel = new \PHPExcel();
        $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式
        $objPHPExcel->setActiveSheetIndex(0);
        // 列标 有几列就设几个
        $columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'];
        // 每列的宽度 长度对应列标
        $width = [30, 10, 12, 12, 20, 15, 15, 20, 13, 16, 30, 13, 15];
        // 设置列宽
        foreach ($columns as $k => $v) {
            $objPHPExcel->getActiveSheet()->getColumnDimension($v)->setWidth($width[$k]);
        }
        // 设置表格第一行显示内容
        $i = 0;
        foreach ($field as $k => $v) {
            $objPHPExcel->getActiveSheet()->setCellValue($columns[$i] . '1', $v);
            $i++;
        }
        // 填充数据
        /**
         * 可以写成以下格式
         * $objPHPExcel->getActiveSheet()->setCellValue('A2',$v['name])
         *                               ->setCellValue(单元格,要写入的数据);
         * 表头同理
         */
        $column_keys = array_keys($field);
        foreach ($list as $k => $v) {
            $j = 0;
            foreach ($v as $key => $val) {
            	// 加 \t 是为了防止长数字显示科学记数法
                $objPHPExcel->getActiveSheet()->setCellValue($columns[$j] . ($k + 2), "\t".$v[$column_keys[$j]]."\t");
                $j++;
                // 避免出现下标不存在
                if ($j == count($column_keys)) {
                    break;
                }
            }
        }
        // 防乱码
        ob_end_clean();
        header('Content-Type: application/vnd.ms-excel;charset=utf-8'); //文件类型,字符编码
        header('Content-Disposition: attachment;filename="' . $title . '.xls"'); //文件名
        header('Cache-Control: max-age=0');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  //excel 2003
        // 浏览器输出
        $objWriter->save('php://output');
        exit;
    }
 类似资料: