PHPExcel エクセル表示

エクセル表示テストファイル作成3

前項で、セル内の背景色、文字色、文字太さの書式と値を取得し $sheetData[] 配列を作成しました。
引き続き、$sheetData[] 配列をテ-プルタグを使用してプラウザに表示していきます。
作成ファイル内容は、
63Pear Village に戻り
左サイドナビ「PHPExcel エクセル表示」の中の
PHPExcel エクセル表示テスト PHP ファイル
から見てください。

表示内容 $sheetData 配列の中を見る

エクセルの中身が


test-2 エクセル

であったとき、表示内容 $sheetData 配列は次のようになっています。

  $sheetData = Array(
  [0] => Array(
   [0] => [0][0] A1 青赤細
   [1] => [0][1] B1 白黒太
   )
  [1] => Array(
   [0] => [0][1] A2 白赤太
   [1] => [1][1] B2 黄黒細
   )
  [2] => Array(
   [0] => 1.23
   [1] => 
   )
  )

又、背景色 $cellst、フォント色 $font_cl、太文字 $font_bold 配列は次のようになっています。

  背景色 $cellst 配列
  $cellst = Array(
  [0] => FFDEEAF6
  [1] => FF000000
  [2] => FF000000
  [3] => FFFFFF00
  [4] => FF000000
  [5] => FF000000
  )
  フォント色 $font_cl 配列
  $font_cl=Array(
  [0] => FFFF0000
  [1] => FF000000
  [2] => FFFF0000
  [3] => FF000000
  )
  太文字 $font_bold 配列
  $font_bold = Array(
  [0] => 
  [1] => 1
  [2] => 1
  [3] => 
  )

背景色と文字色 RGB 値の見直し

$c = 0~(セルの総数-1) とすると、背景色 $cellst[$c] 配列には色の RGB 値が入っているはずなのに何か変ですね。
頭の2文字に FF が入っています。
これを削除する必要があるのです。
PHP 関数 substr($cellst[$c], 2) を使用して FF を削ります。
substr の第一引数は対象文字列
第ニ引数は、削りたい先頭からの文字数
です。
文字色も同様に処理します。
substr($font_cl[$c], 2);
でもまだ変です。
背景色 $cellst で FF を削除すると背景色 RGB が'000000'になってしまいます。
これって黒ですよね。
白'FFFFFF'でないと困ります。
仕方ないので、
$tdcolor = substr($cellst[$c], 2);
if($tdcolor == '000000'){
  $tdcolor = 'FFFFFF';
}
として背景色-黒を白に変更します。

太文字処理

太文字処理をするための前準備をします。
配列 $font_bold[$c] には文字が太字の時には '1' が入っています。
太字用の CSS を $font_b とし
$font_bold[$c] = 1 ならば、
$font_b = ';font-weight:bold;">';
を準備します。
$font_b = ';">';
if($font_bold[$c] == 1){
  $font_b =
  ';font-weight:bold;">';
}
ちょっと分かりにくいですが、';">' は、 style の閉じ記号です。
これがないと style が浮いてしまいます。

TD タグ内の style 処理

TD タグでテ-ブル作成します。
具体的には、

  <td class="samp_td"
   style = "
   color:#FF0000;
   background-color:#DEEAF6;
   font-weight:bold;
   ">あいうえお</td>

ここの style = "・・・・;" の書き方は CSS の書式と同じです。
上記のように TD タグを作れば、文字色 #FF0000(赤)、背景色#DEEAF6(水色)、太文字で 「あいうえお」と表示されます。

foreach 文で処理

まずは、
$data = '<table class="samp_tb">';
$c = 0;
foreach($sheetData as $table){ //foreach①
  $data .= '<tr>';
  foreach($table as $td){ //foreach②
  ・・・・・
  }//foreach②END
}//foreach①END
とします。
上記エクセル test-2.xlsx の例では $sheetData は $sheetData[0]~[2] から構成されていますので、foreach①は3回(= $table) 廻ります。
次ぎに、$table に対しては2個づつデ-タがありますので foreach②は2回(= $td)廻ります。
又、「.=」 は結合代入演算子、この演算子は向かって左側の引数に右側の引数を追加します。
これで、TD タグ文が $data に蓄積されますので、最後に
echo $data;
とすればプラウザにテ-ブルが表示されます。

foreach 文で TD スタイル作成

まずは PHP で TD タグ文をどう作ったらよいか考えてみましょう。
各スタイル及びデ-タは、
文字色: $ftcolor
背景色: $tdcolor
文字太さ:$font_b
表示内容:$td = $sheetData[][]
です。よって、

  <td class="samp_td" style="color:#
  .$ftcolor
  .';background-color:#'
  .$tdcolor
  .$font_b.$td
  .'</td>';

と書けば TD タグ文は完成ですので、foreach②で繰り返します。

  foreach($table as $td)
  { //foreach②
   $data .=
    '<td class="samp_td"
    style ="color:#'
    .$ftcolor
    .';background-color:#'
    .$tdcolor
    .$font_b
    .$td
    .'</td>';
  }//foreach②END

これで1セル処理が終わりましたので $c = $c + 1 として次のセルを処理します。
1行処理が終わったら </tr> を出して、次の行を処理すべく foreach① に戻ります。
そして、すべての行を処理し終わったら、最後に </table> を出して終わりです。
長くなりましたが、これでエクセル表示ル作テストファイル作成は終了です。
引き続き、エクセル表示ル作テストファイルの動作確認をしていきます。 


エクセル表示ル作テストファイル動作確認 に続く
エクセル表示ル作テストファイル作成2 に戻る
エクセル表示ル作テストファイル作成 に戻る

63PearVillageに戻る