PHPExcelで印刷用の改ページ設定について
PHPExcelで出力しているExcel5形式のxlsファイルの印刷について。
データが少し縦長だったので区切りのよいところで、
改ページを設定しようと悪戦苦闘。
setPritAreaの引数をカンマで区切る
setPritAreaの引数をカンマで区切って指定すればよいと見かける。
確かに開いてすぐに印刷プレビューをすれば意図したとおりになる。
しかし、一度改ページプレビューを開くと設定位置がずれる。
<?php $excel->getActiveSheet() ->getPageSetup() ->setPritArea('A1:K50,A51:K100');
わかりやすいサイトを見つける
http://www.codeunit.co.za/2010/04/18/setting-your-worksheet-printing-layout-options-in-phpexcel/
Excelの設定画面付きで関数の説明を見つけた。
でも、これだとページサイズに最適化されてしまい、
改行位置が意図した位置とは異なる。
<?php $excel->getActiveSheet() ->getPageSetup() ->setFitToPage(true) ->setFitToWidth(1) ->setFitToHeight(0);
公式ドキュメントを読む
ググっても当たらなかったので、公式ドキュメントを読みました。
とりあえず"print"で検索してみると目次で以下の文字を発見。
4.6.14. Setting printing breaks on a row or column
new page や new line でググっても出てこないわけだ。
というわけで最終的に以下で決着
<?php $excel->getActiveSheet() ->setBreak('A50', PHPExcel_Worksheet::BREAK_ROW) ->getPageSetup() ->setFitToPage(true) ->setFitToWidth(1) ->setFitToHeight(0) ->setPritArea('A1:K50,A51:K100');