当前位置 : 主页 > 网络编程 > PHP >

导出导入Excel

来源:互联网 收集:自由互联 发布时间:2021-06-28
index.php getActiveSheet()-setCellValue(chr($asiStart + $i) . 1, $column[$i]); } if (!empty($result)) { $startIndex = 2; foreach ($result as $row) { $objPHPExcel-setActiveSheetIndex(0)-setCellValue('A'.$startIndex, $row['mobile']); $startIn
index.php
 getActiveSheet()->setCellValue(chr($asiStart + $i) . 1, $column[$i]);
	    }
	    
	    if (!empty($result)) {
	        $startIndex = 2;
	        foreach ($result as $row) {
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$startIndex, $row['mobile']);
	            $startIndex++;
	        }
	    }
	    $objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(20);//设置excel宽度
        //$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);//设置某列的宽度
	    // Redirect output to a client’s web browser (Excel2007)
	    $fileName = date("Y-m-d H:i:s", REQUEST_TIME) . ".xlsx";
	    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
	    header('Content-Disposition: attachment;filename="' . $fileName . '"');
	    header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed
	    header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed
	    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
	    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
	    header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
	    header('Pragma: public'); // HTTP/1.0
	    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
	    $objWriter->save('php://output');
	    exit;

?>
OtherController.php
namespace Admin\Controller;

class OtherController extends AdminController {

    /**
     * onethink中Excel导出导入
     * 下载PHPexcel第三方库放入ThinkPHP\Library\Vendor中
     */
    
    //导入
    public function importExcel(){
        header('Content-Type:text/html;charset=utf-8');
        if ( isset($_FILES['files']) && !empty($_FILES['files']) ) {
            if ( !$_FILES['files']['name'] || empty($_FILES['files']['name']) ){
                $this->error("请选择上传的文件");
            }
            $extensions = array('xlsx','xls','csv');
            $arr = explode(".", $_FILES['files']['name']);
            $extend = end($arr);
            if ( !in_array($extend, $extensions) ) {
                $this->error("文件格式不对,请上传xls,xlsx格式的文件");
            }

            $files = Request::instance()->file('files');
            $file_dir = ROOT_PATH . 'public' . DS . 'data/voucherTemplate/';
            $file_name = $_FILES['files']['name']??"";
            $info = $files->move($file_dir, $file_name);
            $file_path = "";
            if( $info ){
                $file_name = str_replace("\\", "/", $info->getSaveName());
                $file_path = $file_dir . $file_name;
            }else{
                echo $files->getError();
                exit();
            }
        
            vendor ( 'PHPExcel' );
            vendor ( 'PHPExcel.PHPExcel_IOFactory' );
            switch (strtolower ( $extend )) {
                case 'csv' :
                    vendor ( 'PHPExcel.Reader.CSV' );
                    $format = 'CSV';
                    $objReader = \PHPExcel_IOFactory::createReader ( $format )->setDelimiter ( ',' )->setInputEncoding ( 'GBK' )->setEnclosure ( '"' )->setLineEnding ( "\r\n" )->setSheetIndex ( 0 );
                    break;
                case 'xls' :
                    vendor ( 'PHPExcel.Reader.Excel5' );
                    $format = 'Excel5';
                    $objReader = \PHPExcel_IOFactory::createReader ( $format );
                    break;
                default :
                    vendor ( 'PHPExcel.Reader.Excel2007' );
                    $format = 'excel2007';
                    $objReader = \PHPExcel_IOFactory::createReader ( $format );
            }            

            $objReader->setReadDataOnly(true);
            $objPHPExcel = $objReader->load($file_path);
            $objWorksheet = $objPHPExcel->getActiveSheet();
            $highestRow = $objWorksheet->getHighestRow();
            $highestColumn = $objWorksheet->getHighestColumn();
            $highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn);
            
            //事物
            $flag = false;
            Db::startTrans();
            //第1行A列起
            for($i=3; $i<=$highestRow; $i++){
                $data = array();
                for($j= 'A'; $j< $highestColumn; $j++){
                    $data[] = $objPHPExcel->getActiveSheet()->getCell("$j$i")->getValue();
                }
                $result = $this->_model->insertData($data);
                if ( $result && $result['code'] == 100 ){
                    $false = true;
                }else {
                    $flag = false;
                    Db::rollback();
                    $this->error( $result['msg'] );
                }
            }
            if ( !$false ){
                Db::rollback();
                $this->error( $result['msg'] );
            }
            Db::commit();
            $this->success('导入成功!');
        }else{
            $this->error("请选择上传的文件");
        }
    }
    
    public function exportExcel(){
        $expCellName = array('场地名','优惠券名称','优惠券类型','天数','折扣','开始时间', '结束时间', '优惠内容');
        //导出的数据格式
        $expTableData = array(
            array('浦东', '5天优惠券', '天数券', '5', '', '2017-11-20 09:00:00', '2018-02-18 22:00:00', '5天优惠券的优惠内容'),
            array('虹桥', '8折优惠券', '折扣券', '', '0.8', '2017-11-20 09:00:00', '2018-02-18 22:00:00', '8折优惠券的优惠内容'),
        );
        $expTitle = "优惠券模板";
        
        $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
        $fileName = 'voucher_template';//or $xlsTitle 文件名称可根据自己情况设定
        $cellNum = count($expCellName);        //多少列
        $dataNum = count($expTableData);        //多少行
        Vendor("PHPExcel");
         
        $objPHPExcel = new \PHPExcel();            //初始化
        $cellName = array('A','B','C','D','E','F','G','H');
        
        //标题
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle);//标题
        $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
        $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(30);//设置标题行高
        $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getFont()->setName('微软雅黑');
        $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getFont()->setSize(16);
        $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//标题水平居中
        $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//标题垂直居中
       
        //底部注意事项
        $attention = "注意事项:";
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A5', $attention);
        $objPHPExcel->getActiveSheet(0)->mergeCells('A5:'.$cellName[$cellNum-1].'5');//合并单元格
        $objPHPExcel->getActiveSheet()->getRowDimension(5)->setRowHeight(20);//设置标题行高
        $objPHPExcel->getActiveSheet()->getStyle('A5:I5')->getFont()->setSize(14);
        $objPHPExcel->getActiveSheet()->getStyle('A5:I5')->getFont()->setColor(\PHPExcel_Style_Color::indexedColor(3));//设置颜色,颜色值可查看对应的indexedColor方法

        //列表水平、垂直居中
        $objPHPExcel->setActiveSheetIndex()->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//所有水平居中
        $objPHPExcel->setActiveSheetIndex()->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//所有垂直居中
        
        //设置宽度
        foreach ( $cellName as $key=>$value){
            $objPHPExcel->getActiveSheet()->getRowDimension($key+1)->setRowHeight(20);
            $objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(20);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($value.'2', $expCellName[$key]);     //表头(列名)
        }
        
        //设置行高
        foreach ( $expTableData as $key=>$value ){
            $objPHPExcel->getActiveSheet()->getRowDimension($key+2)->setRowHeight(30);
        }
        //输出数据
        for($i=0;$i<$dataNum;$i++){
            for($j=0;$j<$cellNum;$j++){
                $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$j]);            //内容
            }
        }
        
        header('pragma:public');
        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xlsx"');
        header("Content-Disposition:attachment;filename=$fileName.xlsx");//attachment新窗口打印inline本窗口打印
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('php://output');
        exit;        
    }
}
上一篇:Curl
下一篇:kkkkkkkkkkkkkkk
网友评论