首页 技术 正文
技术 2022年11月16日
0 收藏 875 点赞 4,863 浏览 2794 个字

一、封装 Excel 导出类

include/components/ExecExcel.php

<?php/*** * @Excel 导入导出类。 */class ExecExcel {    /***     * @导出方法     * @$font excel第一行的提示信息,     *        要求:一定要与数据库中取出的字段对应     * $data 数据库取出的数据     *        要求:只能传递需要导出的字段,否则会数据错乱。     */    public static function Export($font,$data){        //@获得对象        $Obj=ExecExcel::getObject();        //@获得当前活动 sheet 操作对象        $objSheet=$Obj->excel->getActiveSheet();        //@获得操作的表格字母        $letter=$Obj->getLetter($font);        //@设置当前 sheet 名称        $objSheet->setTitle("dakayungou");        //@Excel写入头部提示信息        foreach ($font as $ak=>$av){            $objSheet->setCellValue($letter[$ak].'1',$av);        }        //@Excel写入数据        foreach ($data as $dk=>$dv){            $num=$dk+2;            $dv=array_values($dv);            foreach ($dv as  $k=>$d){                //@自动设置单元格宽度                $objSheet -> getColumnDimension($letter[$k]) -> setAutoSize(true);                //@设置单元格为文本格式                $objSheet->getStyle($letter[$k])->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);                $objSheet->setCellValueExplicit($letter[$k].$num,$d,PHPExcel_Cell_DataType::TYPE_STRING);            }        }        //@销毁变量        unset($data);        unset($font);        //@header头声明为下载        header('Content-Type:application/vnd.ms-excel');        header('Content-Disposition:attachment;filename=demo.xls');        header('Cache-Control:max-age=0');        //@传入当前实例对象,生成指定格式文件        $objWrite=PHPExcel_IOFactory::createWriter($Obj->excel,'Excel5');        //@输出到浏览器        $objWrite->save("php://output");    }    //@获取对应字母方法    protected function getLetter($font){        //@生成26个字母        $letter=range('A','Z');        //@计算字母长度        $letter_long=count($letter);        //@存储遍历好的数据        $array=array();        //@遍历数组        foreach ($font as $k=>$f){            $temp='';            //@如果长度大于26            $last=substr($k/$letter_long,0,1);            if($last>0){                $temp.=$letter[$last-1];            }            $temp.=$letter[$k%$letter_long];            $array[$k]=$temp;        }        //@销毁变量        unset($font);        //@返回拼接好的数组        return $array;    }    //@用来存储该对象    private  static $object;    //@用来保存Excel对象    protected $excel=null;    //@    //@    private function __construct(){        Yii::import('application.vendors.*');        require 'PHPExcel.php';        $this->excel= new PHPExcel();    }    //@私有克隆    private function __clone(){    }    //@获取对象方法    public static function getObject(){        if(self::$object instanceof self){            return self::$object;        }else{            return self::$object=new self;        }    }}

二、封装执行sql文件

include/components/ExecSql.php

<?php/*** * @执行 sql 类。 */class ExecSql {    //@执行sql方法【获取所有】    public static function All($sql){        //@获得数据库对象        $connection = Yii::app()->db;        //@执行传递过来的sql        return $connection->createCommand($sql)->queryALL();    }    //@执行sql方法【获取第一条】    public static function One($sql){        //@获得数据库对象        $connection = Yii::app()->db;        //@执行传递过来的sql        return $connection->createCommand($sql)->queryRow();    }}

三、控制器层代码

<?php class OrderController extends JController{    public function actionExport()    {        //@获得下载的数据id        $ids=isset($_POST['ids'])?htmlentities($_POST['ids']):0;        //@判断id合法性        if (!$ids) {            $this->error("参数错误请重试");            die;        }        //@去除两边的逗号        $ids=trim($ids,',');        //@拼接sql        $sql='select name,phone,first,second,third,address,remark,orderno from `orders_win` where id in('.$ids.')';        //@获取所有数据        $all=ExecSql::All($sql);        //@判断数据合法性        if(empty($all)){            $this->error("参数错误请重试");            die;        }        //@excel第一行显示信息        $font=array('姓名','联系号码','省','市','区','地址','备注','订单号');        //@调用导出        ExecExcel::Export($font,$all);    }}

结束。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,401
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,813
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,896