phpSpreadsheet を使ってEXCELファイルに出力するところまで、ようやく辿り着きました。
try { // DB接続時にfetchモードを指定 $pdo = new PDO($dsn, $user, $password, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC]); foreach ($pdo->query("SELECT ===( 中 略 )=== GROUP_CONCAT(process_code separator ',') as wkbn FROM process_plan GROUP BY desired_date, product_num, direction_num, branch_num ORDER BY customer_code ") as $row) { $tmp = []; $sav = []; foreach ($row as $key=>$value) { if ($key === 'wkbn') { $sav = str_getcsv($value); } else { $tmp[] = $value; } } foreach ($sav as $val) { if ($val !== '') { $tmp[] = $val; } } $data[] = $tmp; } } $sheet->fromArray($data, $exception_value, 'A2');
出力されるワークシートの装飾を自動化できれば完成となります。
- 「$sav?」「$val?」の値が”MA”の時は->setARGB「黄色 argb(FFFFFF00)」
- 「$sav?」「$val?」の値が”GV”の時は->setARGB「青 argb(FF0000FF)」
- 「$sav?」「$val?」の値が”ZZ”の時は->setARGB「赤 argb(FFFF0000)」
上記の条件のように、ワークシート全体から特定の文字列を検索し、該当セルの背景色を指定色に変更するループ?を作るにはどうやったらいいでしょうか。
上記コードでいうところの
30行目 $tmp[] = $value;
37行目 $data[] = $tmp;
のあたりに当該セルの背景色を$value(もしくは$tmp)、あるいは、$tmp[] (もしくは$data[])の値が”MA”のときは”背景を黄色”という具合に設定できるのでしょうか。※設定できるのかできないのかすらわかりません。
もしくは・・・
$sheet->fromArray($data, $exception_value, 'A2');
この部分のオプション的コード(パラメータ?)を指定する感じでコードを組めば背景色を指定できるのでしょうか。
$tmp[]?を使用しているのは、MySQLでは「配列関数」が使用できないため、$val個ある列を$data[]に結合するためのものですが、背景色を指定したいのは主に$tmp[$val]の入れ子?の値にのみとなります
現状私の知り得る知識で言いますと、下記の参考URLにある『背景色の指定方法』しか知ることができませんでした。
【PhpSpreadsheetでExcelを操作する全26実例!:背景色を指定する】
https://blog.capilano-fw.com/?p=3945#i-17
【Symfoware:セルの色】
https://symfoware.blog.fc2.com/blog-entry-2059.html
2つのやり方だと、既にセルに代入されている状態のところの背景色を指定しているため、当方がしようとしている$row行:$val列目の背景色を指定する方法自体も理解できていません。



回答1件
あなたの回答
tips
プレビュー