前回記事でlibxl-3.9.5+php_excel-php7_with_pullsでコンパイルとインストールはできたが、addPictureDimとaddPictureScaledで処理が戻ってこなくなる件を書いたばかりだが、その後の調査で、libxl-4.0.0との組み合わせで問題なく稼働することを確認できた。よかった。
blog.psl.ne.jp
VM上のUbuntuで確認後、本番環境でもインストールに成功した。
wget https://www.libxl.com/download/libxl-lin-4.0.0.tar.gz --2021-10-15 22:49:05-- https://www.libxl.com/download/libxl-lin-4.0.0.tar.gz Resolving www.libxl.com (www.libxl.com)... 192.241.129.32 Connecting to www.libxl.com (www.libxl.com)|192.241.129.32|:443... connected. OpenSSL: error:1414D172:SSL routines:tls12_check_peer_sigalg:wrong signature type
libxl.comのサイトから直接wgetで落とせなかったので、Windows上でダウンロードしたファイルを作業ディレクトリにアップロードした。
tar zxf libxl-lin-4.0.0.tar.gz cd libxl-4.0.0.0/ wget https://github.com/Jan-E/php_excel/archive/refs/heads/php7_with_pulls.zip unzip php7_with_pulls.zip cd php_excel-php7_with_pulls phpize ./configure --with-libxl-incdir=../include_c --with-libxl-libdir=../lib64 make sudo make install
このあとで、Virtualmin上のダッシュボード上でapache2をrestartして完了。テストプログラムはいずれも動作した。
<?php ini_set("display_errors", 1); $excel = new ExcelBook("licensename", "lisencekey", true); $excel->setDefaultFont("Meiryo UI", 11); $sheet = $excel->addSheet('Sheet1'); $pic = $excel->addPictureFromFile("sample.png"); $sheet->addPictureDim(0, 10, $pic, 128, 128, 0, 0); $sheet->addPictureScaled(0, 0, $pic, 1, 0, 0); $filename = "rawdata_".date("YmdHis").".xlsx"; $filename_j = rawurlencode("テスト3-".date("YmdHis").".xlsx"); header("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); header("Content-Disposition: attachment; filename={$filename}; filename*=utf-8''{$filename_j}"); $excel->save("php://output"); ?>
ここには紹介していないが、ExcelAutoFilterクラスも使えることを確認。
これで当面使いものになるので、他のサーバにも同様にインストールすることにする。
LibXLのライセンスは、シングルサーバのライセンスだと、1年間で199€(約28000円)、更新1年ごとに99€(約14000円)かかる。結構高めだが、十分その価値がある。