首頁  >  文章  >  後端開發  >  php匯出excel表格的原理

php匯出excel表格的原理

王林
王林原創
2019-09-06 14:11:104085瀏覽

php匯出excel表格的原理

在了解php是如何匯出excel表格之前先了解excel的本質

excel分成兩大版本excel2007(後綴.xlsx)、excel2003(後綴.xls),excel2007本質是xml的一個集合文檔(壓縮文檔),excel2007文檔的組成就是xml的集合壓縮文檔。 excel2003:本質是一個二進位。

了解了excel,就下來介紹介紹php導出excel的原理:

#對於excel2007來說,由於其本質為xml的集合文檔,所以導出過程就是解析xml的過程;對於excel2003來說,由於其本質是二進位文件,所以,導出excel的過程首先會打開二進製文件,然後讀取內部信息,並把內部信息轉化為可以識別的內容的過程。

兩種匯出方式

方式一:使用PHPExcel類別庫

//引入PHPExcel库文件(路径根据自己情况)
include './phpexcel/Classes/PHPExcel.php';
$excel = new PHPExcel(); //创建对象
$letter = array('A','B','C','D','E','F','F','G'); //Excel表格式,这里简略写了8列
$tableheader = array('学号','姓名','性别','年龄','班级');//表头数组
//填充表头信息
for($i = 0;$i < count($tableheader);$i++) {
$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
}
$data = array(
array(&#39;1&#39;,&#39;小王&#39;,&#39;男&#39;,&#39;20&#39;,&#39;100&#39;),
array(&#39;2&#39;,&#39;小李&#39;,&#39;男&#39;,&#39;20&#39;,&#39;101&#39;),
array(&#39;3&#39;,&#39;小张&#39;,&#39;女&#39;,&#39;20&#39;,&#39;102&#39;),
array(&#39;4&#39;,&#39;小赵&#39;,&#39;女&#39;,&#39;20&#39;,&#39;103&#39;)
);
//填充表格信息
for ($i = 2;$i <= count($data) + 1;$i++) {
$j = 0;
foreach ($data[$i - 2] as $key=>$value) {
$excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
$j++;
}
}
$write = new PHPExcel_Writer_Excel5($excel);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header(&#39;Content-Disposition:attachment;filename="testdata.xls"&#39;);
header("Content-Transfer-Encoding:binary");
$write->save(&#39;php://output&#39;);

方式二:簡單的PHP匯出excel,不適用任何外部類別庫檔案

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=reply.csv");
header("Pragma: no-cache");
header("Expires: 0");
$output = fopen("php://output", "w");
$header = array(&#39;学号&#39;,&#39;姓名&#39;,&#39;性别&#39;,&#39;年龄&#39;,&#39;班级&#39;);
$converter = function($value) {
return iconv(&#39;utf-8&#39;, &#39;gbk&#39;, $value);
};
$header = array_map($converter, $header);
$list = array(
array(&#39;1&#39;,&#39;小王&#39;,&#39;男&#39;,&#39;20&#39;,&#39;100&#39;),
array(&#39;2&#39;,&#39;小李&#39;,&#39;男&#39;,&#39;20&#39;,&#39;101&#39;),
array(&#39;3&#39;,&#39;小张&#39;,&#39;女&#39;,&#39;20&#39;,&#39;102&#39;),
array(&#39;4&#39;,&#39;小赵&#39;,&#39;女&#39;,&#39;20&#39;,&#39;103&#39;)
);
fputcsv($output, $header);
foreach($list as $k => $v)
{
$csvrow = array_map($converter, array(
$v[0],
$v[1],
$v[2],
$v[3],
$v[4],

));
fputcsv($output, $csvrow);
}
fclose($output);

以上內容僅供參考!

想了解更多相關內容請造訪PHP中文網:PHP影片教學

#

以上是php匯出excel表格的原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn