今回は PHPExcel で行う「ワークシート」の「列(カラム)」及び「行」の 「幅設定、表示・非表示設定、グループ化/アウトライン化設定」 について説明したいと思います。
それぞれは別々の項目ですが、「列(カラム)」及び「行」の見え方に関する処理ですので、ここでまとめて説明します。
■列(カラム)の幅の設定
列(カラム)の幅の設定を行うには ワークシートオブジェクト の getColumnDimension() メソッドで 列の寸法オブジェクト を取得し setWidth() メソッドで列(カラム)の幅の設定を行います。
setWidth() メソッドの引数は文字幅の単位を指定しますが、文字幅はブックの 既定のフォントの'0'(ゼロ)文字の幅 の様です。
以下に例を示します。
ワークシートのデフォルトスタイルのフォント名を 「MS Pゴシック」 フォントサイズを 「14」 に設定します。
その後 setWidth メソッドで 12文字分 に設定します。
[B1]セルに「0」を12文字設定し「B」列の幅が フォントの'0'の12文字分の幅 になっているか確認します。
<?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php'; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook->getActiveSheet(); // デフォルトスタイルオブジェクト取得 $objDefaultStyle = $objSheet->getDefaultStyle(); // フォントオブジェクト取得 $objFont = $objDefaultStyle->getFont(); // フォント名設定 $objFont->setName('MS Pゴシック'); // フォントサイズ設定 $objFont->setSize(14); // 列の寸法オブジェクトの setWidth メソッド $objSheet->getColumnDimension('B')->setWidth(12); // [B1]セルに「0」を12文字設定 $objSheet->setCellValue('B2', '000000000000'); // [test9-1.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter($objBook, "Excel2007"); $objWriter->save('test9-1.xlsx'); exit(); ?>
出力されたエクセルファイルを見てみると以下の様になります。
「B」列の幅がほぼ文字列「000000000000」('0'12個分)になっています。
■列(カラム)の表示・非表示の設定
ワークシートの列の可視性を設定するには ワークシートオブジェクト の getColumnDimension() メソッドで 列の寸法オブジェクト を取得し setVisible() メソッドで列(カラム)の表示・非表示の設定を行います。 以下のソースは「B」列を明示的に示し、「C」列を非表示にします。
<?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php'; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook->getActiveSheet(); // 列の寸法オブジェクトの setVisible メソッド $objSheet->getColumnDimension('B')->setVisible(true); $objSheet->getColumnDimension('C')->setVisible(false); // [test9-2.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter($objBook, "Excel2007"); $objWriter->save('test9-2.xlsx'); exit(); ?>
出力されたエクセルファイルを見てみると以下の様になります。
「C」列が非表示なっているのが分かります。
■列(カラム)のグループ化/アウトライン化の設定
列をグループ化/アウトライン化するには ワークシートオブジェクト の getColumnDimension() メソッドで 列の寸法オブジェクト を取得し setOutlineLevel() メソッドでアウトラインのレベル設定を行います。
列の寸法オブジェクト の setCollapsed() メソッドで折りたたみの設定を行います。 また、列を非表示に設定しないと、折りたたみはExcel 2007で表示されません。
<?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php'; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook->getActiveSheet(); // 列の寸法オブジェクトの setOutlineLevel メソッド $objSheet->getColumnDimension('C')->setOutlineLevel(1); // 列の寸法オブジェクトの setCollapsed メソッド(折りたたむ) $objSheet->getColumnDimension('C')->setCollapsed(true); // 列の寸法オブジェクトの setVisible メソッド(非表示) $objSheet->getColumnDimension('C')->setVisible(false); // [test9-3.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter($objBook, "Excel2007"); $objWriter->save('test9-3.xlsx'); exit(); ?>
出力されたエクセルファイルを見てみると以下の様になります。
■行の高さ設定
行の高さ設定を行うには ワークシートオブジェクト の getRowDimension() メソッドで 行の寸法オブジェクト を取得し setRowHeight() メソッドで行の高さ設定を行います。
Excelは行の高さをポイントで換算します。 「1」ポイントは「1/72」インチ(または約0.35mm)です。 デフォルト値は12.75ポイントで、値の許容範囲は「0」~「409」ポイントです。 「0」ポイントの設定は非表示の行です。
<?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php'; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook->getActiveSheet(); // 行の寸法オブジェクトの setRowHeight メソッド(50ポイント) $objSheet->getRowDimension('2')->setRowHeight(50); // 行の寸法オブジェクトの setRowHeight メソッド(0ポイント:非表示) $objSheet->getRowDimension('4')->setRowHeight(0); // [test9-4.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter($objBook, "Excel2007"); $objWriter->save('test9-4.xlsx'); exit(); ?>
出力されたエクセルファイルを見てみると以下の様になります。
■行の表示・非表示の設定
ワークシートの行の可視性を設定するには ワークシートオブジェクト の getRowDimension() メソッドで 行の寸法オブジェクト を取得し setVisible() メソッドで列(カラム)の表示・非表示の設定を行います。
以下のソースは「2,4,6」行を非表示にします。
<?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php'; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook->getActiveSheet(); // 行の寸法オブジェクトの setVisible メソッド $objSheet->getRowDimension('2')->setVisible(false); $objSheet->getRowDimension('4')->setVisible(false); $objSheet->getRowDimension('6')->setVisible(false); // [test9-5.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter($objBook, "Excel2007"); $objWriter->save('test9-5.xlsx'); exit(); ?>
出力されたエクセルファイルを見てみると以下の様になります。
「2,4,6」行が非表示なっているのが分かります。
■行のグループ化/アウトライン化の設定
行をグループ化/アウトライン化するには ワークシートオブジェクト の getColumnDimension() メソッドで 行の寸法オブジェクト を取得し setOutlineLevel() メソッドでアウトラインのレベル設定を行います。
行の寸法オブジェクト の setCollapsed() メソッドで折りたたみの設定を行います。 また、行を非表示に設定しないと、折りたたみはExcel 2007で表示されません。
<?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php'; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook->getActiveSheet(); // 行の寸法オブジェクトの setOutlineLevel メソッド $objSheet->getRowDimension('2')->setOutlineLevel(1); // 行の寸法オブジェクトの setCollapsed メソッド(折りたたむ) $objSheet->getRowDimension('2')->setCollapsed(true); // 行の寸法オブジェクトの setVisible メソッド(非表示) $objSheet->getRowDimension('2')->setVisible(false); // [test9-6.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter($objBook, "Excel2007"); $objWriter->save('test9-6.xlsx'); exit(); ?>
出力されたエクセルファイルを見てみると以下の様になります。
コメント