PHP5.2~でエクセル出力するライブラリ mk-j/php_xlsxwriter
ライブラリについて
PHPでエクセル出力する場合、ライブラリにPHPExcelとかがあるが、だいぶ古くてもうすぐ更新されなくなる。
composerインストールできるものを探していると新しいのがあるが、PHP7必須だったりする。
PHP5.2以上だとmk-j/php_xlsxwriter というのがあった。
クラスファイル分けしてなくて、1ファイルに全機能が入っている。あまり機能充実はしていない。
特色としては、「Never run out of memory with PHPExcel again.」とうたっている。出力をバッファすることでPHPExcelみたいなメモリオーバーを防止しているよということらしい。
機能を見る
Readmeと同梱のexamples11例を見ると、だいたい使い方がわかる。
セルの結合は次のような書き方。
$writer->markMergedCell($sheet1, $start_row=0, $start_col=0, $end_row=0, $end_col=4);
文字列の折り返し表示はスタイルにwrap_text=>trueを指定する。
$writer->writeSheetRow($sheet4, array(101,'this text will wrap' ), $row_options = array('height'=>30,'wrap_text'=>true));
目的が果たせるのか確認していてソースを見ると、シンプルなXMLを出力していることがわかった。VBAとXMLで単語が統一されているのでわかりやすい。
Excelを作るXMLの仕様についてはこちらのサイトとかがとても役に立った。
https://p-space.jp/index.php/development/open-xml-sdk
たとえばセルの枠線は標準の機能で引けるが、(右上から左下などの)斜線を引くオプションがない。
(VBA)
BorderC7.DiagonalUp = new BooleanValue(true);
(XML)
<border diagonalUp="true">
みたいな書き方だとわかったので、該当の箇所を探して変更できた。
あとは行幅を文字列の長さで調節してほしい。
<col customWidth="true">
と書いている箇所があって、
VBAだと
ws.Column(1).AdjustToContents();
が該当する。
これはいろいろ触ってみたがわからなかった。。
Author And Source
この問題について(PHP5.2~でエクセル出力するライブラリ mk-j/php_xlsxwriter), 我々は、より多くの情報をここで見つけました https://qiita.com/hanoopy/items/ac7a8f00cf327399b4b3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .