###PHPExcelでaddsheetをしてコピーしたセルのStyleが変更できません。
現在、エクセルの帳票出力プログラムを作成しており、分類毎に所定のフォーマットにしたがったシートを複製しています。
シートの複製を行い、セルへのデータの書き込みは出来ているのですが、
そのセルのフォーマットを指定すると出力されたファイルが壊れてしまいます。
原因が分かる方、教えて頂けないでしょうか。
よろしくお願い致します。
###発生している問題・エラーメッセージ(出力された壊れたエクセルを開いたもの)
<b>Fatal error</b>: Uncaught PHPExcel_Exception: Your requested sheet index: 3 is out of bounds. The actual number of sheets is 3. in C:\xampp\php\pear\phpexcel\vendor\phpoffice\phpexcel\Classes\PHPExcel.php:577 Stack trace: #0 C:\xampp\php\pear\phpexcel\vendor\phpoffice\phpexcel\Classes\PHPExcel.php(469): PHPExcel->getSheet(3) #1 C:\xampp\php\pear\phpexcel\vendor\phpoffice\phpexcel\Classes\PHPExcel\Writer\Excel5\Worksheet.php(1310): PHPExcel->getActiveSheet() #2 C:\xampp\php\pear\phpexcel\vendor\phpoffice\phpexcel\Classes\PHPExcel\Writer\Excel5\Worksheet.php(480): PHPExcel_Writer_Excel5_Worksheet->_writeWindow2() #3 C:\xampp\php\pear\phpexcel\vendor\phpoffice\phpexcel\Classes\PHPExcel\Writer\Excel5.php(187): PHPExcel_Writer_Excel5_Worksheet->close() #4 C:\xampp\htdocs\calc_overhead\class\LPHPExcel.php(175): PHPExcel_Writer_Excel5->save('php://output') #5 C:\xampp\htdocs\calc_overhead\system\calc\manager\self_download.php(13): LPHPExcel->createExcel() #6 {main} thrown in <b>C:\xampp\php\pear\phpexcel\vendor\phpoffice\phpexcel\Classes\PHPExcel.php</b> on line <b>577</b><br />
###該当のソースコード(抜粋)
//$this->_bookにはエクセルのオブジェクト格納済 $company_sheet = $this->_book->setActiveSheetIndex(2); //コピー開始位置のシート番号 $sheet_no = 3; //データを分類毎に分割して配列に格納([プロジェクト名][カテゴリ名][連番][データ種別]) $items = $this->_summaryCompanyData($this->_data['data']); if(is_array($items)){ foreach($items as $project => $category_data){ $np = self::CompanyStartPosition; //エクセルにデータを書き始める初期位置を設定 //シートをコピー $copy_sheet = $company_sheet->copy(); $copy_sheet->setTitle($project); $this->_book->addSheet($copy_sheet,$sheet_no); if($this->_book->sheetNameExists($project)){ //コピーしたシートをアクティブに変更 $sheet = $this->_book->getSheetByName($project); //見出しの設定 $sheet->setCellValueByColumnAndRow(self::CompanyTitlePosition[0],self::CompanyTitlePosition[1],$project); $sheet->setCellValueByColumnAndRow(self::CompanyDatePosition[0],self::CompanyDatePosition[1],$this->_data['ap_date']); $sheet->getStyleByColumnAndRow(self::CompanyTitlePosition[0],self::CompanyTitlePosition[1])->getFont()->setSize(14); } } }
###試したこと
見出しの設定部分で、3つめのフォントサイズを14にしている行をコメントアウトすると正常にエクセルが出力され、これをいれたままだと上記のエラーとなりファイルが壊れてしまいます。
###補足情報(言語/FW/ツール等のバージョンなど)
php7.0.9
XAMPP for Windows 7.0.9
phpexcel 1.8.1

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。