300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > PHP 导出cvs文件

PHP 导出cvs文件

时间:2020-03-29 00:29:18

相关推荐

PHP 导出cvs文件

iconv用法:/manual/zh/function.iconv.php

iconv

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

iconv — 字符串按要求的字符编码来转换

说明

iconv( string$in_charset, string$out_charset, string$str) : string

将字符串strin_charset转换编码到out_charset

参数

in_charset

输入的字符集。

out_charset

输出的字符集。

如果你在out_charset后添加了字符串//TRANSLIT,将启用转写(transliteration)功能。这个意思是,当一个字符不能被目标字符集所表示时,它可以通过一个或多个形似的字符来近似表达。 如果你添加了字符串//IGNORE,不能以目标字符集表达的字符将被默默丢弃。 否则,会导致一个E_NOTICE并返回FALSE

Caution

//TRANSLIT运行细节高度依赖于系统的 iconv() 实现(参见ICONV_IMPL)。 据悉,某些系统上的实现会直接忽略//TRANSLIT,所以转换也有可能失败,out_charset会是不合格的。

str

要转换的字符串。

注:运用//TRANSLIT 的话,空格是不能识别的,转换会报错。

-----------------------------------------------------------------------------------------------------------------------------------------------

public function downloadPushRecord(){$oData = \App\Models\MedlivePushRecord::orderBy('id', 'DESA')->get();$aData = [];foreach ($oData as $k => $v) {if ($v->medical_editor) {$medical_editor = implode(json_decode($v->medical_editor, true), '、');} else {$medical_editor = '';}$aData[] = [$v->id, $v->project_code, $v->project_name, $v->sales_person, $v->project_manager,$v->push_time, $v->push_platform, $v->push_department, $v->push_position, data_get(\App\Models\MedlivePushRecord::STATUS_MAP, $v->status, ''),$v->advertorial_title, $v->url, $v->standard_price, $v->sales_price,$v->drug_company, $medical_editor, $v->editor_email, $v->push_category, $v->remark,];}//注意CSV文件的头两个字不能是大写字母$aHeaderInfo = array('id', '项目名称', '项目单号', '销售', '项目经理', '推送时间','推送平台', '推送科室', '发布位置', '审核状态', '软文标题', '推文URL', '刊例标准价格','销售价钱', '药企名称', '编辑人员', '编辑邮箱', '推送类别', '备注');$this->putCsv($aHeaderInfo, $aData, "词库");}

/*** 导出excel(csv)* @data 导出数据* @headlist 第一行列名(注意前两个列名不能是大写!否则输出的扩展名不是cvs)* @fileName 输出Excel文件名*/public static function putCsv($header_data = [],$data= [],$file_name='test'){//(默认30秒)set_time_limit(0)不对PHP执行时间做限制。set_time_limit(0);header('Content-Type: application/vnd.ms-excel');//注意 如果对文件名做了处理,文件名就不能带有特殊符号“——”等其他// header("Content-Disposition:filename=" . iconv("UTF-8", "GB18030", "$file_name") . ".csv");header('Content-Disposition: attachment;filename='.$file_name.'.csv');header('Cache-Control: max-age=0');$fp = fopen('php://output', 'w');if (!empty($header_data)) {foreach ($header_data as $key => $value) {$header_data[$key] = iconv('utf-8', 'gbk', $value);}fputcsv($fp, $header_data);}$num = 0;//每隔$limit行,刷新一下输出buffer,不要太大,也不要太小$limit = 100000;//逐行取出数据,不浪费内存$count = count($data);if ($count > 0) {for ($i = 0; $i < $count; $i++) {$num++;//刷新一下输出buffer,防止由于数据过多造成问题if ($limit == $num) {ob_flush();flush();$num = 0;}$row = $data[$i];foreach ($row as $key => $value) {try {$row[$key] = iconv("utf-8",'GBK//TRANSLIT',trim($value));} catch (\Exception $e) {info('导出出错数据:'.$row[$key]);}}try {fputcsv($fp, $row);} catch (\Exception $e) {print $e->getMessage();exit();}}}fclose($fp);}

---------------------

作者:不二周助Rex

来源:CSDN

原文:/weixin_42188216/article/details/83899445

版权声明:本文为博主原创文章,转载请附上博文链接!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。