背景の最下位レイヤの色の設定(setBgColor)

広告

setFgColorと同じく背景の色を設定する場合に使用するメソッドがsetBgColorです。単独でsetBgColorを使用した場合はsetFgColorメソッドを使用した場合と同じです。背景の中で前面にレイヤに対して色を設定するのがsetFgColorであり、後面のレイヤに対して色を設定するのがsetBgColorです。その為、両方のメソッドを使った場合は前面に設定した色が表示されるだけなので意味はありません。

setBgColorメソッドが意味を持つのは網かけパターンを合わせて設定した場合です。網かけパターンを設定した場合、網目の色は前面に設定した色となりますが、網目でない部分の色が後面に設定した色となります。

ではsetBgColorメソッドについて確認します。setBgColorメソッドはSpreadsheet_Excel_Writer_Formatクラスで用意されています。

セルの"背景色"を設定します。ここでは、"背景"とはセルの背景の最下位レイヤ
のことを意味します。

パラメータ:
  $color  文字列 ('blue' など) か、数値 (範囲は 8 から 63) のどちらかです

1番目の引数には色を表す文字列か、色に割り当てられた数値を指定します。色の指定方法については「色の設定(setColor)」を参照して下さい。

実際には次のように記述します。

<?php
require_once("Spreadsheet/Excel/Writer.php");

$workbook = new Spreadsheet_Excel_Writer();
$workbook->send('sample1-1.xls');

$format =& $workbook->addFormat();
$format->setFgColor('blue');
$format->setBgColor('red');
$format->setPattern(10);

$worksheet =& $workbook->addWorksheet('シート1');
$worksheet->writeString(0, 0, "こんにちは", $format);
$workbook->close();
?>

これはaddFormatメソッドで次のように記述した場合と同じです。

<?php
require_once("Spreadsheet/Excel/Writer.php");

$workbook = new Spreadsheet_Excel_Writer();
$workbook->send('sample1-1.xls');

$format =& $workbook->addFormat(array('FgColor'=>'blue',
                                         'BgColor'=>'red',
                                         'Pattern'=>10));

$worksheet =& $workbook->addWorksheet('シート1');
$worksheet->writeString(0, 0, "こんにちは", $format);
$workbook->close();
?>

サンプルプログラム

では簡単なサンプルで試してみます。

sample16-1.php

<?php
require_once("Spreadsheet/Excel/Writer.php");

$workbook = new Spreadsheet_Excel_Writer('./sheet/sample16-1.xls');
$worksheet =& $workbook->addWorksheet('シート1');

for ($i = 0; $i < 4; $i++){
  for ($j = 0; $j < 6; $j++){
    $no = $i * 6 + $j;
    if ($no <= 18){
      $format1 =& $workbook->addFormat();
      $format1->setFgColor('green');
      $format1->setPattern($no);
      $worksheet->write($i, $j, "P.$no", $format1);

      $format2 =& $workbook->addFormat();
      $format2->setFgColor('green');
      $format2->setBgColor('red');
      $format2->setPattern($no);
      $worksheet->write($i + 5, $j, "P.$no", $format2);
    }
  }
}

$workbook->close();

print('<html>');
print('<head>');
print('<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />');
print('</head>');
print('<body>');
print('<p><a href="./sheet/sample16-1.xls">Excelファイル</a></p>');
print('</body></html>');
?>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

背景の最下位レイヤの色の設定(setBgColor)

作成されたExcelファイルへのリンクが表示されます。リンクからExcelファイルをローカルに保存しExcelで開いて下さい。

背景の最下位レイヤの色の設定(setBgColor)

網かけを設定した場合に背景に設定した2つの色が組み合わされて適用されていることが確認できます。

( Written by Tatsuo Ikura )