今回は PhpSpreadsheet で行う「ワークシート」の「紙の大きさ」や「ページ設定」について説明したいと思います。
本の紹介では...
PHP8の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり習得。
PHPプログラミングの標準教科書『独習PHP』が、最新のPHP8に対応。
PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、
PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説します。
...
■ワークシートの紙の方向と大きさの設定
紙の方向と大きさの設定は、ワークシートの PageSetup オブジェクトの setOrientation() , setPaperSize() メソッドを使用して行うことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php // ライブラリ読込 require '../vendor/autoload.php' ; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // Spreadsheetオブジェクト生成 $objSpreadsheet = new Spreadsheet(); // ワークシートオブジェクト $objSheet = $objSpreadsheet ->getActiveSheet(); // PageSetupオブジェクト $objPageSetup = $objSheet ->getPageSetup(); // 紙の向き設定[ランドスケープ:横向き] $objPageSetup ->setOrientation(PageSetup::ORIENTATION_LANDSCAPE); // 紙の大きさ設定[A4] $objPageSetup ->setPaperSize(PageSetup::PAPERSIZE_A4); // [A1]セルに文字列設定 $objSheet ->setCellValue( 'A1' , 'ABCDEFG' ); // [test4-1.xlsx]:Excel2007形式で保存する $objWriter = new Xlsx( $objSpreadsheet ); $objWriter ->save( 'test4-1.xlsx' ); ?> |
setOrientation() の引数は以下の様に「PageSetupクラス」に定義されています。
1 2 3 4 | // Page orientation const ORIENTATION_DEFAULT = 'default' ; // デフォルト const ORIENTATION_LANDSCAPE = 'landscape' ; // ランドスケープ:横向き const ORIENTATION_PORTRAIT = 'portrait' ; // ポートレート :縦向き |
紙の向きの設定は「ORIENTATION_LANDSCAPE」、「ORIENTATION_PORTRAIT」のどちらかに必ず設定した方がいいと思います。 私の所では「ORIENTATION_DEFAULT」にして保存した場合に、エクセルで開いてみたら、「ポートレート」になっていましたが、 デフォルトが本当に「ポートレート」かは保証できませんので。
setPaperSize() の引数は以下の様に「PageSetupクラス」に定義されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // Paper size const PAPERSIZE_LETTER = 1; const PAPERSIZE_LETTER_SMALL = 2; const PAPERSIZE_TABLOID = 3; const PAPERSIZE_LEDGER = 4; const PAPERSIZE_LEGAL = 5; const PAPERSIZE_STATEMENT = 6; const PAPERSIZE_EXECUTIVE = 7; const PAPERSIZE_A3 = 8; const PAPERSIZE_A4 = 9; const PAPERSIZE_A4_SMALL = 10; const PAPERSIZE_A5 = 11; const PAPERSIZE_B4 = 12; const PAPERSIZE_B5 = 13; const PAPERSIZE_FOLIO = 14; const PAPERSIZE_QUARTO = 15; // まだ他にあります |
上記のソースを実行してエクセルの「印刷」で開いてみました。
■ワークシートのページ設定(スケーリング)
PhpSpreadsheet のページ設定スケーリングメソッドは、図の様に、[ページ設定]ダイアログのスケーリング設定オプションを直接設定できます。
メソッド | 初期値 | 有効メソッド呼出 | 備考 |
---|---|---|---|
setFitToPage | false | ||
setScale | 100 | setFitToPage(false) | |
setFitToWidth | 1 | setFitToPage(true) | 0:FitToWidth をしない |
setFitToHeight | 1 | setFitToPage(true) | 0:FitToHeight をしない |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php // ライブラリ読込 require '../vendor/autoload.php' ; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // Spreadsheetオブジェクト生成 $objSpreadsheet = new Spreadsheet(); // ワークシートオブジェクト $objSheet = $objSpreadsheet ->getActiveSheet(); // PageSetupオブジェクト $objPageSetup = $objSheet ->getPageSetup(); // FitToPageを有効設定 $objPageSetup ->setFitToPage(true); // FitToWidth:1 $objPageSetup ->setFitToWidth(1); // FitToHeight:0 $objPageSetup ->setFitToHeight(0); // [A1]セルに文字列設定 $objSheet ->setCellValue( 'A1' , 'ABCDEFG' ); // [test4-2.xlsx]:Excel2007形式で保存する $objWriter = new Xlsx( $objSpreadsheet ); $objWriter ->save( 'test4-2.xlsx' ); exit (); ?> |
出力されたエクセルファイルを見てみると以下の様になります。
(エクセルの「印刷」ページを開いて、「設定」の所の一番下の「ページ設定」リンクをクリックします。)
■ワークシートのページ設定(余白)
PhpSpreadsheet のページ設定の余白設定メソッドは、図の様に、[ページ設定]ダイアログの余白設定オプションを直接設定できます。
これらのメソッドはワークシートオブジェクトから PageMarginsオブジェクト を取得し呼出します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?php // ライブラリ読込 require '../vendor/autoload.php' ; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Worksheet\PageMargins; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // Spreadsheetオブジェクト生成 $objSpreadsheet = new Spreadsheet(); // ワークシートオブジェクト $objSheet = $objSpreadsheet ->getActiveSheet(); // PageMarginsオブジェクト $objPageMargins = $objSheet ->getPageMargins(); // Top 設定 $objPageMargins ->setTop(1); // Right 設定 $objPageMargins ->setRight(0.75); // Left 設定 $objPageMargins ->setLeft(0.75); // Bottom 設定 $objPageMargins ->setBottom(1); // [A1]セルに文字列設定 $objSheet ->setCellValue( 'A1' , 'ABCDEFG' ); // [test4-3.xlsx]:Excel2007形式で保存する $objWriter = new Xlsx( $objSpreadsheet ); $objWriter ->save( 'test4-3.xlsx' ); exit (); ?> |
出力されたエクセルファイルを見てみると以下の様になります。
(エクセルの「印刷」ページを開いて、「設定」の所の一番下の「ページ設定」リンクをクリックします。)
※設定値の単位がインチなので以下の計算となる
Top(1) : 1.00×2.54cm=2.540cm⇒2.5
Right(0.75) : 0.75×2.54cm=1.905cm⇒1.9
関連する記事
⇒PHP PhpSpreadsheet エクセルのワークシートのセルへのアクセスについて⇒PHP PhpSpreadsheet エクセルのワークシートのセルへ漢字(全角文字)の設定について
⇒PHP PhpSpreadsheet エクセルのワークシートのセルへのアクセスについて(行・列指定)
⇒PHP PhpSpreadsheet エクセルのワークシートのセルのスタイル設定について
⇒PHP PhpSpreadsheet エクセルのワークシートのセルの条件付き書式設定について
⇒PHP PhpSpreadsheet エクセルのワークシートのセルのデータ入力規則設定について
⇒PHP PhpSpreadsheet エクセルのワークシートの紙の大きさやページ設定について
⇒PHP PhpSpreadsheet CSVファイルの読み込み・書き込みについて
⇒PHP PhpSpreadsheet エクセルファイルをPHPの配列データへの読み込みについて(rangeToArray)
ショッピングサイト一通りを最初から自分で作ってみることで、PHPでのシステム開発を学べる入門書です。
コメント