実現したいこと
FuelPHPとPhpSpreadsheetを使ってExcelファイルを出力する機能を作成したいです。
Excelファイルの各設定はController側で設定し、View側でレイアウトを設定しています。(HTML構成)
シートは複数あり、2シート目以降で非表示する項目があります。
発生している問題
サンプルコードを実際にコードを動かしてみると、1シートのみ中身があり2シート目は空欄でシート名も「Worksheet」になってしまうので、
これらを解決を教えていただけると助かります。また、1,2シート目で非表示する項目をどのように非表示にするかわからない状況です。
サインプルコード
Controller
php
1use PhpOffice\PhpSpreadsheet\Shared\Drawing; 2use PhpOffice\PhpSpreadsheet\Spreadsheet; 3use PhpOffice\PhpSpreadsheet\Worksheet; 4 5class Controller_Test 6{ 7 $data['lists'][] = array('name'=>'たなかたろう', 'age'=>20, 'from'=> '東京都'); 8 $data['lists'][] = array('name'=>'やまだはなこ', 'age'=>22, 'from'=> '千葉県'); 9 10 $htmlstring = ''; 11 $filename = 'リスト.xlsx'; 12 $reader = new \PhpOffice\PhpSpreadsheet\Reader\Html(); 13 $spreadsheet = $reader->loadFromString($htmlstring); 14 $spreadsheet->getProperties()->setTitle($filename); 15 16 for ($k=1; $k < 3; $k++) 17 { 18 if($k == 1) 19 { 20 $sheet = $spreadsheet->getActiveSheet(); 21 } 22 else 23 { 24 $spreadsheet->createSheet(); 25 $sheet = $spreadsheet->getActiveSheet($k - 1); 26 } 27 $sheet->setTitle('リスト'."_$k"); 28 } 29 30 31 $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); 32 33 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 34 header('Content-Disposition: attachment;filename="'.$filename.'"'); 35 header('Cache-Control: max-age=0'); 36 $writer->save('php://output'); 37 exit; 38 39}
View
php
1<!-- 2ページ以降は非表示 --> 2<table> 3 <tbody> 4 <tr> 5 <th>会社名</th> 6 <th>株式会社サンプル</th> 7 </tr> 8 </tbody> 9</table> 10 11 12<!-- 2ページ以降も表示 --> 13<table> 14 <tbody> 15 <tr> 16 <th>名前</th> 17 <th>年齢</th> 18 <th>出身</th> 19 </tr> 20 <?php foreach ($lists as $list){ ?> 21 <tr> 22 <td><?php echo $list['name']; ?></td> 23 <td><?php echo $list['age']; ?></td> 24 <td><?php echo $list['from']; ?></td> 25 </tr> 26 <?php } ?> 27 </tbody> 28</table>
環境
MacOS 11.4
PHP 7.4
FuelPHP 1.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。