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