搜尋
首頁php教程PHP源码HP通过链式操作将数据输出excel(csv)格式

CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的。现在我们来学习用PHP链式操作输出excel(csv)格式。

<script>ec(2);</script>

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

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

 代码如下 复制代码
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('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);



输出的csv如下图所示:

 

HP通过链式操作将数据输出excel(csv)格式

但是这里面有个问题,从编码是utf-8的数据库中取出来的汉字输出excel(csv)会乱码,这个时候你要注意,要在获取数据之前设置数据库的编码,比如说我的需要的是utf-8进行输出,这个时候就要

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

进行编码转换方可正常显示,下面是我的数据库信息和编码前后效果:

HP通过链式操作将数据输出excel(csv)格式

数据库信息

HP通过链式操作将数据输出excel(csv)格式HP通过链式操作将数据输出excel(csv)格式

设置数据库编码前后的对比

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)