PHPでエクセルファイル(.xls)を作る方法
ソーシャルブックマークに追加:PHPでエクセル(.xls)のファイルが作りたくて、
こんな方法で.xlsファイルは作れるって話。
その方法は簡単な話で、
「XML形式のエクセルの拡張子を.xlsに変える」だけ。
[エクセルのXML形式]
の基本的な構成は
<Workbook>
<Worksheet>
<Table>
<Row>
<Cell>
これしか必要ないみたいで
後は、<Style>とか<Data>とか見た目を指定したり、
型を指定したりするタグが大量にある。
それで、試しにワークシート名、二次元配列の表データ、作成ファイル
を渡すと、エクセルファイル(.xls)を作成するfunction作ってみた。
-----------------------------------------------------------------------------------------
function CreateXls($ws_name,$data,$path){
$res='<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="' . $ws_name . '">
<Table>' . "\n";
foreach($data as $data_one){
$res.='<Row>' . "\n";
for($ii=0;$ii<count($data_one);$ii++){
$res.='<Cell><Data ss:Type="String">' . $data_one[$ii] . '</Data></Cell>' . "\n";
}
$res.='</Row>' . "\n";
}
$res.='</Table>
</Worksheet>
</Workbook>';
$fp = fopen($path,"w");
flock($fp, LOCK_SH);
fputs($fp,$res);
flock($fp, LOCK_UN);
fclose($fp);
}
-----------------------------------------------------------------------------------------
追記:
記事をあげてから調べたら、
もしかして、上記ファイルはOffice 2003でしか開けないかもしれない。
しかも今のofficeはもともとXML??
最新office持ってないから確認できず。。