最簡單的php導出excel文件方法


網上有很多php操作excel或其他文件的類庫,也做的很完善。比如無比風騷的PHPExcel,官方網站:http://www.codeplex.com/PHPExcel ,pear的Spreadsheet_Excel_Writer類等。然而我們只是用到其中一部分功能,這就會讓程序顯的有些臃腫。在你調用這些類庫的時候,不管你是多簡單的操作,他都會消耗巨大的內存,這對我們來說是很不可取的。

    比如我需要一個做php導出 excel的的程序,只需要把相關的數據導出到excel表就可以了,這么簡單的操作就不需要用那些類庫什么的了。直接用header的方式就可以了:header("Content-type:application/vnd.ms-excel"); 

<?php 
header("Content-type:application/vnd.ms-excel"); 
header("Content-Disposition:attachment;filename=Export_test.xls"); 
$tab="\t"; $br="\n";
$head="編號".$tab."備注".$br;
//輸出內容如下:  
echo $head.$br;
echo  "test321318312".$tab;  
echo  "string1"; 
echo  $br;

echo  "330181199006061234".$tab;  //直接輸出會被Excel識別為數字類型
echo  "number"; 
echo  $br;

echo  "=\"330181199006061234\"".$tab;  //原樣輸出需要處理
echo  "string2"; 
echo  $br;
?>

  在導出后會發現一個問題,如果數據是數字會出現一些意想不到的情況。比如,"012345",在excel中會變成"12345";如果輸入身份證號碼這樣的長數字,在excel中會用科學計數法表示出來,並且最后的四位數字會出現偏差,變位0000等情況。這就需要把單元格設置為文本格式,方法是

echo  "=\"330181199006061234\""

  

如果程序是utf-8編碼的,還需要用iconv函數去轉碼,不然是會亂碼的,亂碼的。

iconv("UTF-8", "GB2312", $yourstr);

  

如果導出中文時出現亂碼,可以嘗試將字符串轉換成gb2312,例如下面就把$yourStr從utf-8轉換成了gb2312:

$yourStr = mb_convert_encoding(”gb2312″, “UTF-8″, $yourStr);

  

另word格式導入類似,,指定header就可以了:

header("Content-Type:   application/msword");        
header("Content-Disposition:   attachment;   filename=doc.doc");  

 php代碼:

<?php

	
	/**
	 * exportExcel($data,$title,$filename);
    * 導出數據為excel表格
    *@param $data    一個二維數組,結構如同從數據庫查出來的數組
    *@param $title   excel的第一行標題,一個數組,如果為空則沒有標題
    *@param $filename 下載的文件名
    *@examlpe 
    exportExcel($arr,array('id','賬戶','密碼','昵稱'),'文件名!');
*/
    function exportExcel($data=array(),$title=array(),$filename='report')
	{
		header("Content-type:application/octet-stream");
		header("Accept-Ranges:bytes");
		header("Content-type:application/vnd.ms-excel");  
		header("Content-Disposition:attachment;filename=".$filename.".xls");
		header("Pragma: no-cache");
		header("Expires: 0");
		//導出xls開始
		if (!empty($title))
		{
			foreach ($title as $k => $v)
			{
				$title[$k]=iconv("UTF-8", "GB2312",$v);
			}
			$title= implode("\t", $title);
			echo "$title\n";
		}
		if (!empty($data))
		{
			foreach($data as $key=>$val)
			{
				foreach ($val as $ck => $cv)
				{
					$data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);
				}
			 $data[$key]=implode("\t", $data[$key]);      
			}
			
			echo implode("\n",$data);
		}
	}
	
$total = array();
$fp = fopen('card.txt', 'r');
$i = 0;
while ($v = fgets($fp, 100)) 
{
	$arr = explode(",", trim($v));
	$total[$i]["cid"]			= "=\"".$arr[0]."\"";
	$total[$i]["code"]			= "=\"".$arr[1]."\"";
	$total[$i]["ctime"]			= '2014-09-10 14:06:29';
	$total[$i]["expireday"]		= '2015-12-31 23:59:59';
	$i++;
}
exportExcel($total, array('卡','生成碼','開始時間','有效時間'), 'card');
exit;
	

  

card.txt文件:
900010061112,22279892213248,2013-06-30
900010061113,52139844827982,2013-06-30
900010061114,67313895480603,2013-06-30
900010061115,66178571957378,2013-06-30
900010061116,78951625651967,2013-06-30
900010061117,73835952566949,2013-06-30
900010061118,74436659365440,2013-06-30

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM