忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

PHP PHPExcel エクセルのワークシートの「列(カラム)・行」の「幅、表示・非表示、グループ化/アウトライン化」設定について


今回は 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();
?>

出力されたエクセルファイルを見てみると以下の様になります。













PR

コメント

コメントを書く