«

PHPExcel 导出 导入

时间:2024-4-30 11:08     作者:杨佳乐     分类: PHP


//导出代码 亲测可用 需先在vendor 下引入PHPExcel
 public function order_dc(){
        if(IS_POST){
            //执行导出

            $where="1=1";

            //店铺
            if(!empty(I('spid'))){
                $where.=" and shopid='".I('spid')."'";
            }

            //处理时间
            if(!empty(I('start_time'))){
                $where.=" and createdat>".strtotime(I('start_time'));
            }

            if(!empty(I('end_time'))){
                $where.=" and createdat<".strtotime(I('end_time'));
            }

            $list=M('wm_orderlist')->where($where)->select();

            //excel导出
            vendor("PHPExcel.PHPExcel");

            vendor("PHPExcel.PHPExcel.IOFactory");
            vendor("PHPExcel.PHPExcel.Reader.Excel5");
            vendor("PHPExcel.PHPExcel.Reader.Excel2007");

            $objexcel=new \PHPExcel();

            //设置excel文件名称 当前日期
            $date = date("Y_m_d_h_i_s",time());
            $fileName = "{$date}.xlsx";

            //Excel文件的说明信息
            $objexcel->getProperties()->setCreator("Maarten Balliauw")
                ->setLastModifiedBy("Maarten Balliauw")
                ->setTitle("Office 2007 XLSX Test Document")
                ->setSubject("Office 2007 XLSX Test Document")
                ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                ->setKeywords("office 2007 openxml php")
                ->setCategory("Test result file");

            $objexcel->setActiveSheetIndex(0)
                ->setCellValue('A1','test')
                ->setCellValue('B1','test');

            //把表中数据导入Excel文件中,多数据循环设置值   如果是长数字在前面加个空格变换成字符串

            foreach($list as $key=> $value) {
                $key+=2;
                $objexcel->setActiveSheetIndex(0)
                    ->setCellValue('A'.$key,' '.$value['test'])
                    ->setCellValue('B'.$key,$value['test']);
            }

            // 设置活动单指数到第一个表,所以Excel打开这是第一个表
            $objexcel->setActiveSheetIndex(0);

            // 将输出重定向到一个客户端web浏览器(Excel2007)
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename='.$fileName);
            header('Cache-Control: max-age=0');

            //要是输出为Excel2007,使用 Excel2007对应的类,生成的文件名为.xlsx.如果是Excel2005,使用Excel5,对应生成.xls文件
            $io=new \PHPExcel_IOFactory();
            $objWriter = $io::createWriter($objexcel, 'Excel2007');
            //$objWriter = $io::createWriter($objexcel, 'Excel5');

            //支持浏览器下载生成的文档
            $objWriter->save('php://output');

        }
  }