导出excel

  /**
     * @DESC 数据导出
     * @notice max column is z OR 26,overiload will be ignored
     * @notice
     * @example
     *  $data = [[1, "小明", "25"]];
     *  $header = ["id", "姓名", "年龄"];
     *  Myhelpers::exportData($data, $header);
     * @return void, Browser direct output
     */
    public static function exportData($data, $header, $title = "test", $filename = "data")
    {
        if (!is_array($data) || !is_array($header)) return false;
        $objPHPExcel = new \PHPExcel();

        // Set properties
        $objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
        $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
        $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
        $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
        $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
        // Add some data
        $obj = $objPHPExcel->setActiveSheetIndex(0);
        //添加头部
        $hk = 0;
        foreach ($header as $k => $v) {
            $colum = \PHPExcel_Cell::stringFromColumnIndex($hk);
            $obj->setCellValue($colum . "1", $v);
            $hk += 1;
        }
        $column = 2;
        $objActSheet = $objPHPExcel->getActiveSheet();
        foreach ($data as $key => $rows)  //行写入
        {
            $span = 0;
            foreach ($rows as $keyName => $value) // 列写入
            {
                $j = \PHPExcel_Cell::stringFromColumnIndex($span);
                // 前面加一个空格 会将值变成字符串
                $objActSheet->setCellValue($j . $column, ' '.$value);
                $span++;
            }
            $column++;
        }
        // Rename sheet
        if ($title) {
            $objActSheet->setTitle($title);
        }
        // Save
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        header("Pragma:public");
//        header('Content-type: application/vnd.ms-excel');
        header("Content-Type:application/vnd.ms-excel;name=\"{$filename}.xlsx\"");
//        header("Content-Type:application/x-msexecl;name=\"{$filename}.xls\"");
        header("Content-Disposition:inline;filename=\"{$filename}.xlsx\"");
        $objWriter->save("php://output");
    }

 

posted @ 2017-08-28 11:19  lglblog  阅读(114)  评论(0编辑  收藏  举报