Home  >  Article  >  Backend Development  >  php generate csv file

php generate csv file

不言
不言Original
2018-04-27 15:00:103483browse

The content of this article is about php generating csv files. It has certain reference value. Now I share it with everyone. Friends in need can refer to it

No more nonsense, here is the practical information

Method one:

/** * 导出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);    
    }
    }

Method two:

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

Although the above are two methods, they can actually be regarded as a

process:

1 . Use the fopen() function to open the specified file. There is no created file.

2. Process the title. If it is an array, you can use fputcsv() directly like the first code to write the data directly to the file. handle; or use the second piece of code to split using the implode() function

3. For data processing, the first piece is to convert the data line by line into the data format and write it to the file; the second piece is to implode () Split the data, the whole data is finally spliced ​​together, and the format is converted to write the data; Note: fwrite() writes the data

4. Close File handle

Summary: The process of generating a csv file is like this. I recommend the first one, which saves memory and refreshes the output buffer regularly to prevent problems caused by too much data

Related recommendations:

PHP generates a specified number of verification codes and controllable interference elements

PHP generates a word file

PHP generates specified digit verification code and controllable interference elements Part 2






The above is the detailed content of php generate csv file. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn