Tp5 PHPExcel을 이용한 데이터 내보내기 실습

7980 단어

Tp5 PHPExcel을 이용한 데이터 내보내기 실습


첫 번째는 당연히 PHPExcel 홈페이지에서 phpexcel 플러그인을 다운로드하여thinkphp의vendor 디렉터리에 놓는 것이다.둘째, 데이터에 들어가는 구체적인 논리를 도구 클래스에 봉인한다.구체적인 논리 코드는 다음과 같습니다.
class UntilLogic
{
    public function phpExcelList($field, $list, $title='  ')
    {
        vendor('phpExcel.PHPExcel');
        $objPHPExcel = new \PHPExcel();
        $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //        
        foreach ($list as $key => $value) {
            foreach ($field as $k => $v) {
                if ($key == 0) {
                    $objPHPExcel->getActiveSheet()->setCellValue($k . '1', $v[1]);
                }
                $i = $key + 2; //    2   
                $objPHPExcel->getActiveSheet()->setCellValue($k . $i, $value[$v[0]]);
            }

        }
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");;
        header('Content-Disposition:attachment;filename='.$title.'.xls');
        header("Content-Transfer-Encoding:binary");
//        $objWriter->save($title.'.xls');
        $objWriter->save('php://output');
    }
}

세 번째 단계는 데이터를 다운로드하고 excel 데이터 제목 $field 파라미터를 조합해서 두 번째 방법을 직접 호출하는 것입니다.
public function outExcelRecharge() {
        $where = "1=1";
        $data       = $dbEngin->field('transactions.*,u.name as uname, k.name as kname')->where($where)->order('id desc')->select();
        foreach ($data as $key => $value) {
            $data[$key]['price'] = number_format($data[$key]['price']/100,2);
            $data[$key]['uname'] = filterEmoji($value['uname']);
        }
        $field = array(
            'A' => array('id', 'ID'),
            'B' => array('user_id', '  ID'),
            'C' => array('uname', '    '),
            'D' => array('created', '  '),
            'E' => array('order_id', '   '),
            'F' => array('price', '  ( )'),
            'G' => array('coins', '     '),
            'H' => array('device_id', '  ID'),
            'I' => array('ktv_id', 'ktvID'),
            'J' => array('kname', 'ktv  '),
            'K' => array('status', '  (paid:   ,refunded:   ,pending:   )')
        );
        $until = new UntilLogic();
        $until->phpExcelList($field, $data, '    _' . date('Y-m-d'));
    }

좋은 웹페이지 즐겨찾기