技術的なことサーバのデータをExcel形式で出力したいというニーズがよくある。基本CSVでもいいのだが、基本的に数値であっても文字列として取り扱いため、CSVだと、頭の0が取れてしまうとか、"1-1"などの文字列が勝手に日付になったりという問題があるので、Excelのセルデータ型を文字列にしておいて、値をセットして出力するというのが楽でよい。今まで使っていた、Perlだと、Excel::Writer::XLSXは、速度はそこそこだが、既存のファイルを読み込んで編集できない(テンプレート支給のケースでNG)、PHPのPHPExcelはメモリ食い過ぎ+遅すぎ+古過ぎ、後発のPhpspreadsheetはメモリ食い過ぎ+遅すぎで使えない。100行くらいまでならなんとか使えるが、数千行とか、万を超えるデータは到底扱えない。Extensionというのがあった。LibXLは、C++で書かれていて高速かつメモリを消費しない。数万行のデータも瞬時に書き出せる。いう頼もしい記事を見つけた。類似の記事は他にもあったが代表的なものを以下に貼り付ける。object)を作ってphp.iniに登録すれば使えそうということがわかり、弊社のVPS(CentOS6.10、PHP5.3.3)の環境に入れてみることにした。64bit環境の場合はlib64、32bit環境の場合はlibとする。2.4.3のエラーが出る。libxmlのパスが通っていなかったので設定した。directoryというエラーが出る。php.iniに以下の行を追加する。ライセンス名とキーは、ライセンスを購入していないのでこのまま。購入したら、メールで送られてきた内容を記述して再起動。Extension[php_excel]extension=excel.so;excel.license_name=LICENSE_NAME;excel.license_key=LICENSE_KEYApacheを再起動。restartテストプログラムを試す。横300列、タテ100行に6ケタのランダムな数値を入れるという内容。0埋めをしているため、セットする文字列の冒頭に"'"をつけた。application/octet-stream');header('Content-Disposition:attachment;filename="test.xlsx"');$objExcel->save('php://output');?>アクセスして瞬時にダウンロードが始まった。