爱程序网

PHP链式操作输出excel(csv)

来源: 阅读:

工作中经常会遇到产品运营让导出一些简单的比较规范的数据,这时候要是有一个简单的方法可以用就简单多了。下面是我的一个输出简单的excel(csv)的方法类,用到了链式操作。说到链式操作,在jquery中可能经常用到,是不是也感觉到链式操作用起来很爽,我们也在这个类中实现下链式操作。

其实链式操作很简单的,就是在前一个类方法最后返回一个该类的对象($this),提供给下一个方法调用。

<?phpclass Array2csv{    /*     *@var string $ext 扩展名      */    private $ext = 'csv';    /**      * @desc构造方法     * @param string $filename 要输出的文件名     * @param string $ext 扩展名     */    public function __construct($filename,$ext=null){        ob_start();        header("Content-type: text/html;charset=utf-8");        header("Content-type: application/x-csv");        if(PHP_SAPI == 'cli') echo "CLI模式下不能导出csv文件r";        $this->ext = $ext === null ? $this->ext : $ext;        header("Content-Disposition: attachment;filename=".$filename.".".$this->ext);        ob_flush();        return $this;    }    /**      * @desc 打印excel标题     * @param array $title 要输出的标题行     * @param object Array2csv 对象本身     */        public function title($title){        $title = implode(",", $title);        echo $title."n";        return $this;    }    /**      * @desc 打印一行excel内容     * @param array $body 要输出的内容     * @param object Array2csv 对象本身     */        public function body($body){        if(!is_array($body) || empty($body)) {            return false;        }        $body = implode(",", $body);        echo $body."n";        return $this;    }    /**      * @desc 打印多行excel内容     * @param array $bodyArr 要输出的多行内容     * @param object Array2csv 对象本身     */        public function multiBody($bodyArr){        if(!is_array($bodyArr) || empty($bodyArr)) return false;        foreach ($bodyArr as $key => $value) {            if(is_array($value)){                $value = implode(",", $value);                echo $value."n";            }        }        return $this;    }}$test = new Array2csv('test');$arr = array(    array('luluyrt@163.com','奔跑的Man1','奔跑的userman'),    array('luluyrt@163.com','奔跑的Man2','奔跑的userman'),    array('luluyrt@163.com','奔跑的Man3','奔跑的userman'),    array('luluyrt@163.com','奔跑的Man4','奔跑的userman'),    array('luluyrt@163.com','奔跑的Man5','奔跑的userman'),    array('luluyrt@163.com','奔跑的Man6','奔跑的userman'));$test->title(array('测试','呵呵','哈哈'))->body(array('100,sadkl','sdsas','sdvsvdd分'))->multiBody($arr);

相关文章列表: