
-
2017.1.4システム開発
マリンロード
[PHP] PHPExcelでExcelファイルを出力してダウンロードしてみよう(基本)
こんにちは。エンジニアの高田です。
今年ももう終わりですね。大人になると1年過ぎるのがほんと早く感じます。
今年も1年間お世話になりました。
さて今回は私にとってはいまさらですが、久しぶりにPHPExcelを触ることがあったので、
PHPExcelを使ってExcelファイルを出力し、ダウンロードする方法を紹介します。
PHPExcelとは
PHPExcelとは、PHPでExcelファイルを生成することができるライブラリです。
もちろん読み込みも書き込みも可能です。
テンプレートとなるファイルを準備して、そのファイルを読み込み、データを設定して出力することもできれば、1からファイルを作成し、そこにデータを設定して出力することもできます。
PHPExcelのインストール
以下のサイトからダウンロードしてきて、自分自身のPHPプロジェクトに設置することもできれば、Composerからインストールすることも可能です。
<ダウンロードでインストールする>
以下のサイトの右側の「download」ボタンから、ダウンロードします。「PHPExcel_1.8.0_doc.zip」
PHPExcel:https://phpexcel.codeplex.com/
ダウンロードしたファイルを解凍し、これらのファイルを任意のフォルダに格納すればインストール完了です。
PHPExcel本体は「Classes」フォルダに入っています。使用する際は、使用時はこのフォルダ内にある PHPExcel.php を require します。
// PHPExcelの読み込み
require_once("./Classes/PHPExcel.php");
<Composerでインストールする>
Composerでインストールした場合はautoload.phpをrequireします。
require_once __DIR__ . '/vendor/autoload.php';
PHPExcelでExcelを出力してダウンロード
// キャッシュメモリ設定(デフォルト:1MB → 256MB)
// ※キャッシュを有効にした場合、列の挿入(insertNewColumnBefore)・削除(removeColumn)、行の挿入(insertNewRowBefore)・削除(removeRow)が正常に動作しないため注意すること!!
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize' => '256MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
// Excelファイルの新規作成
$objExcel = new PHPExcel();
// シートの設定
$objExcel->setActiveSheetIndex(0);
$objSheet = $objExcel->getActiveSheet();
// A1セルに「テスト」という文字列を設定
$objSheet->setCellValue('A1', 'テスト');
// Excelファイルのダウンロード
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=" . "TestDownload.xlsx");
header("Content-Transfer-Encoding: binary ");
$objWriter->save('php://output');
// メモリの開放
$objExcel->disconnectWorksheets();
unset($objWriter);
unset($objSheet);
unset($objExcel);
これでExcelファイルが出力されるはずです。
値を入れるだけではなく、罫線引いたり、色をつけたり、結構色々とできるんですよ。
最初と最後のところにメモリ系の処理が入っていますが、PHPExcelは便利だけどメモリを食います。便利だけど重いとか遅いとか有名なライブラリです。
それを今まで使ってきてあれこれトラブルを経て、たどりついたおまじないなので入れておくのがオススメです。
それらはまた次回!ではまた。
スタッフおすすめの記事
その他の記事
-
2021.3.2その他
システムエンジニア
大貫 晃一
DDNSとは
-
2021.2.26デザイン
Webデザイナー
岩瀬 莉奈
【Adobe XD:モバイル版】スマホデザインの品質を上げる為に、アプリと連携してみよう!
-
2021.2.25システム開発
代表取締役
大橋 俊昭
人気沸騰のプログラミング言語「Python」に触れよう!!(サードパーティライブラリ編)
-
2021.2.24セールス
Webプランナー
大根田 陸
貴社に合ったWeb制作会社を探すポイント
-
2021.2.22システム開発
システムエンジニア
上松 博志
[リモート] リモートツールあれこれ
-
2021.2.19デザイン
Webデザイナー/ディレクター
小島 和剛
MacのキーボードはMX Keys for Mac以外考えられない。あとモニターを買い替えた話。
-
2021.2.17Webプロモーション
Webコンサルタント
高山 安住
中小企業にとってのコロナ禍の採用市場の変化
-
2021.2.15Webプロモーション
Webコンサルタント
長澤 潤
Googleアナリティクスのサンプルレポートを公開中|実際の企業データでアクセス解析
-
2021.2.10システム開発
システムエンジニア
篠﨑 亮洋
MySQLでテーブル毎のレコード件数を取得する際の注意点
-
2021.2.8会長
取締役会長
石川 博司
催促はクレームである