質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

1728閲覧

FuelPHPとPhpSpreadsheetを使って複数シートあるExcelファイルを出力する方法

user202102

総合スコア9

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/08/15 09:04

実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

本件解決できなかったので別の方法で解決いたしました。

投稿2021/09/09 11:44

user202102

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問