ホームページ >バックエンド開発 >PHPの問題 >PHPがExcelテーブルをエクスポートする原理

PHPがExcelテーブルをエクスポートする原理

王林
王林オリジナル
2019-09-06 14:11:104143ブラウズ

PHPがExcelテーブルをエクスポートする原理

PHP が Excel テーブルをエクスポートする方法を理解する前に、まず Excel の本質を理解しましょう。

excel は、excel2007 (拡張子。ドキュメントを圧縮します。 Excel2003: 本質的にはバイナリ ファイルです。

Excel を理解した後、PHP から Excel をエクスポートする原理を紹介します。

Excel2007 の場合、その本質は XML の集合ドキュメントであるため、エクスポート プロセスはXML の解析プロセス; Excel2003 の場合、その本質はバイナリ ファイルであるため、Excel のエクスポート プロセスは、まずバイナリ ファイルを開いてから、内部情報を読み取り、内部情報を識別可能なコンテンツに変換します。

2 つのエクスポート メソッド:

方法 1: 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;);

方法 2: 単純な 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 中国語 Web サイトにアクセスしてください: PHP ビデオ チュートリアル

以上がPHPがExcelテーブルをエクスポートする原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。