PSLブログ

ヨシナシゴトヲツヅリマス

ubuntu 20.04LTS+PHP-7.4+LibXL-4.0.0+php_excel-php7_with_pullsで解決

前回記事で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円)かかる。結構高めだが、十分その価値がある。