PHPExcel 1.8版本导出excel

看了看很多使用phpexcel的文章,基本上大同小异,复用性太差,我就自己写了个只能导出的excel类库,以后有需要再完善

先用composer require phpoffice/phpexcel得到最新的类库

如果不会,就先学习下composer吧

不然只能花钱去下了 https://download.csdn.net/download/hero2040407/10533214

放到vendor下面

然后引用类库

使用download方法获取导出的excel表

数据可能横向填入或纵向填入 所以有type字段来区分,默认为横向填入,基本不用去传这个.

Excel::getInstance()->download(); 如此就可以使用了,不需要再自己去搞一堆乱七八糟的东西了.

class Excel
{
    private static $instance;


    public static function getInstance()
    {
        if (is_null(self::$instance)) {
            self::$instance = new static();
        }
        return self::$instance;
    }
    /**
     * Notes:  excel下载
     * Date: 2018/7/6 0006
     * Time: 上午 9:22
     * @param $title  /第一行的标题
     * @param $data  /导出数据
     * @param $filename  /文件名称
     * @param $type  /row 横向填入数据-   column 纵向填入 |
     * @throws
     */
    public function download($title, $data, $filename = 'normal', $type = 'row')
    {
        $excel = new \PHPExcel();
        $act_sheet = $excel->setActiveSheetIndex(0);
        $act_sheet->getColumnDimension()->setAutoSize(true);
        $column_count = count($title);
        for($i = 0; $i < $column_count; $i++){
            $act_sheet->setCellValueByColumnAndRow($i , 1 , $title[$i]);
        }
        $data = json_decode(json_encode($data , true));
        switch($type)
        {
            case 'row':
                $row = 2;
                foreach ($data as $v)
                {
                    $column = 0;
                    foreach ($v as $key => $value)
                    {
                        $act_sheet->setCellValueByColumnAndRow($column , $row , $value);
                        $column++;
                    }
                    $row++;
                }
                break;
            case 'column':
                $column = 0;
                foreach ($data as $v)
                {
                    $row = 2;
                    foreach ($v as $key => $value)
                    {
                        $act_sheet->setCellValueByColumnAndRow($column , $row , $value);
                        $row++;
                    }
                    $column++;
                }
                break;
            default :
                break;
        }
        $xlsTitle = iconv('utf-8', 'gb2312', "report");//文件名称
        header('pragma:public');
        header("Content-type:application/vnd.ms-excel;charset=utf-8;name= $xlsTitle.xls");
        header("Content-Disposition:attachment;filename = $filename.xls");//attachment新窗口打印inline本窗口打印
        $objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel5');
        $objWriter->save('php://output');

    }




你可能感兴趣的:(PHPExcel 1.8版本导出excel)