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 );