php导出cvs文件简单类

 PHP类库  2021-02-06  admin  81  109

php导出cvs文件简单类

/**
 * @author http://centphp.com/
 * excel Tool
 */
class CvsExport
{
    public static $readerObj;
    public static $charset = 'utf-8';

    /**
     * 输出切换编码
     * @param $output
     * @return false|string
     */
    public static function excelExportIconv($output)
    {
        return iconv(self::$charset, 'GBK', $output);
    }

    /**
     * 文件保存
     * @param $filePath
     * @param string $title
     * @param array $firstRow
     * @param array $data
     * @return bool
     */
    public static function saveFile($filePath, $title = '', $firstRow = [], $data = []): bool
    {
        ob_start();
        self::outputData($title, $firstRow, $data);
        $content = ob_get_contents();
        ob_clean();
        if ($fp = @fopen($filePath, 'w+')) {
            if (fwrite($fp, $content)) {
                fclose($fp);
                return true;
            }
            fclose($fp);
        }
        return false;
    }

    /**
     * 数据输出
     * @param string $title
     * @param array $firstRow
     * @param array $data
     */
    protected static function outputData($title = '', $firstRow = [], $data = [])
    {
        if (!empty($title)) {
            echo self::excelExportIconv($title) . "\t\n";
        }

        if (!empty($firstRow) && is_array($firstRow)) {
            //输出第一行内容
            foreach ($firstRow as $first) {
                echo self::excelExportIconv($first) . "\t";
            }
            echo "\n";
            if (!empty($data) && is_array($data)) {
                foreach ($data as $item) {
                    foreach ($firstRow as $_key => $_val) {
                        if (isset($item[$_key])) {
                            echo self::excelExportIconv($item[$_key]) . "\t";
                        } else {
                            echo self::excelExportIconv('') . "\t";
                        }
                    }
                    echo "\n";
                }
            }
        } else {
            if (!empty($data) && is_array($data)) {
                foreach ($data as $item) {
                    foreach ($item as $val) {
                        echo self::excelExportIconv($val) . "\t";
                    }
                    echo "\n";
                }
                echo "\n";
            }
        }
    }
}

使用示例:

$data = [
    ['id' => '1', 'name' => '名字1', 'title' => '标题1'],
    ['id' => '2', 'name' => '名字2', 'title' => '标题2'],
    ['id' => '3', 'name' => '名字3', 'title' => '标题3'],
    ['id' => '4', 'name' => '名字4', 'title' => '标题4'],
    ['id' => '5', 'name' => '名字5', 'title' => '标题5'],
    ['id' => '6', 'name' => '名字6', 'title' => '标题6'],
    ['id' => '7', 'name' => '名字7', 'title' => '标题7'],
    ['id' => '8', 'name' => '名字8', 'title' => '标题8'],
];

CvsExport::saveFile(
    dirname(__FILE__) . '/test.cvs',
    '标题',
    ['id' => 'id', 'name' => '名字', 'title' => '内容'],
    $data
);


转载必须注明出处:

php导出cvs文件简单类 —— centhp.com

相关推荐


php在浏览器导出cvs文件

php在浏览器导出cvs文件

ajax下载二进制文件,ajax下载excel文件

开发时有时需要下载文件,如生成excel文件等,在下载过程中需要加上动画或loading效果,由于jquery的ajax返回数据类型不支持二进制,但是原生的js是可以支持返回二进制数据的,所有需要封装ajax下载方法。/** *ajax下载文件 *@paramurl文件生成地址,在浏览器生成文件即header保存文件 *@paramdata其它数据 *@paramfile_name文件名称

js 下载文件,ajax下载文件,ajax 二进制 文件下载

download.js 是文件下载插件,可以下载生成文本(Plain Text)、页面(HTML)、二进制文件(Binary)。一. Plain Texttext stringdownload("helloworld","dlText.txt","text/plain");text dataURLdownload("data:t