程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP鏈式操作輸出excel(csv),鏈式csv

PHP鏈式操作輸出excel(csv),鏈式csv

編輯:關於PHP編程

PHP鏈式操作輸出excel(csv),鏈式csv


工作中經常會遇到產品運營讓導出一些簡單的比較規范的數據,這時候要是有一個簡單的方法可以用就簡單多了。下面是我的一個輸出簡單的excel(csv)的方法類,用到了鏈式操作。說到鏈式操作,在jquery中可能經常用到,是不是也感覺到鏈式操作用起來很爽,我們也在這個類中實現下鏈式操作。

其實鏈式操作很簡單的,就是在前一個類方法最後返回一個該類的對象($this),提供給下一個方法調用。

<?php
class 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('[email protected]','奔跑的Man1','奔跑的userman'),
    array('[email protected]','奔跑的Man2','奔跑的userman'),
    array('[email protected]','奔跑的Man3','奔跑的userman'),
    array('[email protected]','奔跑的Man4','奔跑的userman'),
    array('[email protected]','奔跑的Man5','奔跑的userman'),
    array('[email protected]','奔跑的Man6','奔跑的userman')
);
$test->title(array('測試','呵呵','哈哈'))->body(array('100,sadkl','sdsas','sdvsvdd分'))->multiBody($arr);

 

輸出的csv如下圖所示:

$link = mysqli_connect($host, $user, $passwd, $db); mysqli_query($link, "set names utf8");

 

進行編碼轉換方可正常顯示,下面是我的數據庫信息和編碼前後效果:

數據庫信息

設置數據庫編碼前後的對比

send Me~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved