Le contenu de cet article concerne la génération de fichiers csv par php. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Plus de bêtises, voici les informations pratiques.
Première méthode :
/** * 导出excel(csv) * @data 导出数据 * @headlist 第一行,列名 * @fileName 输出Excel文件名 */ function csv_export($data = array(), $headlist = array(), $fileName) { header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$fileName.'.csv"'); header('Cache-Control: max-age=0'); //打开PHP文件句柄,php://output 表示直接输出到浏览器 $fp = fopen('php://output', 'a');// 打开文件资源,不存在则创建 //输出Excel列名信息 foreach ($headlist as $key => $value) { //CSV的Excel支持GBK编码,一定要转换,否则乱码 $headlist[$key] = iconv('utf-8', 'gbk', $value); } //将数据通过fputcsv写到文件句柄 fputcsv($fp, $headlist); //计数器 $num = 0; //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小 $limit = 100000; //逐行取出数据,不浪费内存 $count = count($data); for ($i = 0; $i < $count; $i++) { $num++; //刷新一下输出buffer,防止由于数据过多造成问题 if ($limit == $num) { ob_flush(); flush(); $num = 0; } $row = $data[$i]; foreach ($row as $key => $value) { $row[$key] = iconv('utf-8', 'gbk', $value); } fputcsv($fp, $row); } }
Méthode deux :
public function getExportLog(){ if (! $this->valid_admin ( @$_SERVER ['PHP_AUTH_USER'], @$_SERVER ['PHP_AUTH_PW'] )) { //$_SERVER ['PHP_AUTH_USER']浏览器接受的用户名输入 header ( 'WWW-Authenticate: Basic realm=""' );//浏览器弹出输入用户名密码提示框 header ( 'HTTP/1.0 401 Unauthorized' ); echo "You need to enter a valid username and password."; exit (); } $oViewLog = new DbsPatientViewLog(); $result = $oViewLog->getAllInfo(); $sname = time(); $dataname=date('Ymd'); $exportdir = public_path()."/exportfile/".$dataname."/"; if(!is_dir($exportdir)) { mkdir($exportdir,0777,true); } //生成csv文件 $elsfile=$exportdir.$sname.'.csv'; $fp = fopen($elsfile, 'w'); $data=""; $title=implode(',', array('医脉通加密ID','医脉通ID','文章ID','参与的活动','访问活动首页的时间','访问记录信息页面的时间','参与活动的方式')); $data=$title; foreach($result as $value) { $line=implode(',', array($value['meduid_old'], $value['meduid'], $value['msgid'], $value['hd_way']==1?'疑似患者转诊':'DES试纸', $value['view_at'], $value['view_at_show'], $value['view_way']==1?'mobile':$value['view_way']==2?'微信浏览器': 'PC', ) ); $data=$data."\r\n".$line; } $data=iconv("UTF-8", "GBK//IGNORE", $data); fwrite($fp,$data); // 写入数据 fclose($fp); //关闭文件句柄 $download_dir= "/exportfile/".$dataname.'/'.$sname.'.csv'; header("Content-type:text/csv"); header("Content-Disposition:attachment;filename=".$sname.'.csv'); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0'); header('Pragma:public'); echo $data;}
Bien que les méthodes ci-dessus soient deux, elles peuvent en fait être considérées comme une seule
process :
1. Utilisez la fonction fopen() pour ouvrir le fichier spécifié. Il n'y a pas de fichier créé
2. S'il s'agit d'un tableau, vous pouvez utiliser fputcsv(. ) directement comme le premier code. Écrivez les données dans le descripteur de fichier ; ou utilisez la deuxième section du code pour utiliser la fonction implode() pour diviser
3. Le traitement des données, la première section consiste à convertir. les données ligne par ligne et écrire le format des données dans le fichier ; la deuxième section La deuxième section consiste à diviser les données avec implode(), toutes les données sont finalement assemblées et le format est converti pour écrire les données ; >4. Fermez le descripteur de fichierRésumé : Il s'agit du processus de génération d'un fichier csv. Je recommande le premier, qui économise de la mémoire et actualise régulièrement le tampon de sortie pour éviter les problèmes causés. par trop de données
Recommandations associées :
PHP génère un code de vérification de chiffres spécifié et des éléments d'interférence contrôlables
PHP génère un fichier Word
PHP génère un code de vérification de chiffres spécifié et des éléments d'interférence contrôlables, partie 2
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!