人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel で Laravel Excel と LibreOfficeを使ってファイルを開いて pdf 出力する

● Laravel で Excel ファイルを開いてダウンロードする

Laravel-Excel ver 3 では まだ現時点では import が使えないようなので ver 2 を入れます。( 参考: https://goo.gl/wxHLE7

● Laravel Excelのインストール

composer で インストールします

composer require "maatwebsite/excel:~2.1.0"

● インストールされたモジュールのバージョン確認

インストールされたモジュールのうち excel 関連のバージョンを調べて置きます

composer show | grep excel
maatwebsite/excel                     2.1.30   Supercharged Excel exports in Laravel
phpoffice/phpexcel                    1.8.2    PHPExcel - OpenXML - Read, Create and Write Spreadsheet ...

Laravel Excel の 2.1.30phpexcel1.8.2 がインストールされています。
ググる時にはこれらのバージョンを参考にしましょう。

● Laravel Excel で テンプレートとなるエクセルファイルを読み込んで表示する

1. 元となるエクセルファイルを storage/excel/test.xls にアップロードする

( storage/excel/ )は存在しないので作成します。

2. routes/web.php に以下を追加する

Route::get('/test/excel', 'TestController@excel');

3. app/Http/Controllers/TestController.php を以下の内容で新規作成する

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;

class TestController extends Controller
{
	public function excel()
	{
		$excel_file = storage_path('excel/test.xls');
		Excel::load($excel_file, function($reader) {
			// 1番目のシートを選択
			$reader->sheet(0, function($sheet) {
				// セルA3に現在の日付を書き込み
				$sheet->cell('A3', function($cell) {
				    $cell->setValue( now()->format('Y/m/d') );
				});		    
			});		    
		})->export('xlsx');
	}
}

4. ブラウザでアクセスして エクセルファイルがダウンロードされることを確認する

https://YOUR-APP.COM/test/excel

にアクセスすると、エクセルファイルがダウンロードされます。
最初のシートの「A3」に今日の日付が書き込まれていることを確認します。
まずこれで Laravel Excel の 動作確認の完了です。

● エクセルファイルをpdfに変換する

PHPでするよりLibreOfficeを使用しましょう。再現性が上がります。(それでも80点ぐらいの再現度ですが。)

1. Libreofficeのインストール

yum -y install libreoffice libreoffice-langpack-ja

インストール後 バージョンを確認します。

libreoffice --version

もし libreoffice が見つからない場合は こちらから検索します。

find / -name soffice.bin

2. IPAフォントをインストール

wget https://ipafont.ipa.go.jp/old/ipafont/IPAfont00303.php -O IPAfont00303.zip
unzip IPAfont00303.zip
cd IPAfont00303
mv *.ttf /usr/share/fonts
cd ..
rm -rf IPAfont00303
rm -f IPAfont00303.zip

3. 源真ゴシックをインストール

mkdir genshingothic
cd genshingothic
wget https://osdn.jp/downloads/users/8/8637/genshingothic-20150607.zip genshingothic-20150607.zip
unzip genshingothic-20150607.zip
mv *.ttf /usr/share/fonts
cd ..
rm -rf genshingothic
rm genshingothic-20150607.zip

4. フォントがインストールされていることを確認

fc-list | grep IPA

5. libreoffice を使ってコンバート

コマンドラインから以下のコマンドを実行します。

libreoffice --headless --convert-to pdf --outdir /home/kusanagi/pdf test.xls

パスは絶対パスで指定しておくと確実です。

No.1383
12/02 22:46

edit