php教程

超轻量级php框架startmvc

php原生导出excel文件的两种方法(推荐)

更新时间:2020-03-14 23:25:52 作者:startmvc
第一种方法:$filename='文件名称';$filetitle='你的标题';if($_POST){set_time_limit(10000);$title='';ini_se

第一种方法:


$filename='文件名称';
 $filetitle='你的标题';
 if($_POST){
 set_time_limit(10000);
 $title = '';
 ini_set('memory_limit','300M');
 header('Content-Type: application/vnd.ms-excel;charset=utf-8');
 $name = $title.".xls";
 header('Content-Disposition: attachment;filename='.$name.'');
 header('Cache-Control: max-age=0');
 $where = "1=1";
 $sql = "";
 $query = DB::Query($sql);
 // PHP文件句柄,php://output 表示直接输出到浏览器 
 $fp = fopen('php://output', 'a');
 // 输出Excel列头信息 
 $head = array('ID');
 //字符替换
 $p_new_lines = array("\r\n", "\n","\t","\r","\r\n", "<pre>","</pre>","<br>","</br>","<br/>");
 $p_change_line_in_excel_cell = '';

 foreach($head as $v){
 echo iconv('utf-8','gb2312',$v) . "\t";
 }
 echo "\n";
 // 计数器 
 $cnt = 0;
 // 每隔$limit行,刷新一下输出buffer,节约资源 
 $limit = 100000;
 // 逐行取出数据,节约内存
 while ($res = mysql_fetch_assoc($query)) {
 $cnt ++;
 if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题 
 ob_flush();
 flush();
 $cnt = 0;
 } 
 echo trim($res['id']). "\t";
 echo "\n";
 }

 }

第二种方法:


$filename='文件名称';
 $filetitle='你的标题';
 if($_POST){
 $title = '';
 ini_set('memory_limit','300M');
 header('Content-Type: application/vnd.ms-excel;charset=utf-8');
 $name = $title.".xls";
 header('Content-Disposition: attachment;filename='.$name.'');
 header('Cache-Control: max-age=0');
 echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns="http://www.w3.org/TR/REC-html40">
 <head>
 <meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT">
 <meta http-equiv=Content-Type content="text/html; charset=gb2312">
 <!--[if gte mso 9]><xml>
 <x:ExcelWorkbook>
 <x:ExcelWorksheets>
 <x:ExcelWorksheet>
 <x:Name></x:Name>
 <x:WorksheetOptions>
 <x:DisplayGridlines/>
 </x:WorksheetOptions>
 </x:ExcelWorksheet>
 </x:ExcelWorksheets>
 </x:ExcelWorkbook>
 </xml><![endif]-->
 </head>';
 $where = "1=1";

 $sql = " ";
 mysql_query('set names "utf8"');
 mysql_set_charset('utf8');
 $query = DB::Query($sql);

 // PHP文件句柄,php://output 表示直接输出到浏览器 
 $fp = fopen('php://output', 'a');
 // 输出Excel列头信息 
 $head = array('ID','xxx');
 //字符替换
 $p_new_lines = array("\r\n", "\n","\t","\r","\r\n", "<pre>","</pre>","<br>","</br>","<br/>");
 $p_change_line_in_excel_cell = '';
 echo "<table>";
 echo "<tr>";
 foreach($head as $v){
 echo "<td>".iconv('utf-8','gb2312',$v)."</td>";
 }
 echo "</tr>";
 // 逐行取出数据,节约内存
 while ($res = mysql_fetch_assoc($query)) {
 echo "<tr>";
 echo "<td style='vnd.ms-excel.numberformat:@'>".$res['id']."</td>";
 echo "<td>".iconv('utf-8', 'gb2312', $res['xxx']."</td>";
 echo"</tr>";
 }
 echo "</table>";
 }

以上这篇php原生导出excel文件的两种方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

php导出excel