PhpSpreadsheetでエクセルのテンプレートを読み込み、同じシートをシート名を変えてコピーする事を試しておりますが、
2回まではコピー出来ましたが3回以上のコピーが出来ません。
(失敗となる方は、ブラウザに「サーバ内部エラー(HTTP 500)」が表示されます)
コピー回数には制限があるのでしょうか? それとも、何か足りない部分があるのでしょうか?
シートのクローンを作り、シート名に適当な名前を付け、追加を行う流れとなっており、同じ流れで2回、3回と
行うようにソースを組んでおります。(シート名は各々変更)
コピーが成功した2回までのソースと、失敗した3回のソースを掲載しますので、アドバイスを頂けると助かります。
PHP
1<?php 2 // 2回までコピーが成功したソース 3 require_once 'c:\windows\system32\vendor\autoload.php'; 4 5 $reader = new PhpOffice\PhpSpreadsheet\Reader\Xlsx(); 6 $reader->setIncludeCharts(TRUE); 7 8 $book = $reader->load('nippou_template.xlsx'); 9 10 $book->setActiveSheetIndex(0); 11 $sheet = $book->getActiveSheet(); 12 13 $clonedWorksheet = clone $book->getSheetByName('nippou'); 14 $clonedWorksheet->setTitle('nippou_copy'); 15 $book->addSheet($clonedWorksheet); 16 17 $clonedWorksheet = clone $book->getSheetByName('nippou'); 18 $clonedWorksheet->setTitle('nippou_copy2'); 19 $book->addSheet($clonedWorksheet); 20 21 header("Content-Description: File Transfer"); 22 header('Content-Disposition: attachment; filename="nippou_test_download.xlsx"'); 23 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 24 header('Content-Transfer-Encoding: binary'); 25 header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 26 header('Expires: 0'); 27 ob_end_clean(); //バッファ消去 28 $writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($book); 29 $writer->save('php://output'); 30 31?>
PHP
1<?php 2 // 3回のコピーが失敗したソース 3 require_once 'c:\windows\system32\vendor\autoload.php'; 4 5 $reader = new PhpOffice\PhpSpreadsheet\Reader\Xlsx(); 6 $reader->setIncludeCharts(TRUE); 7 8 $book = $reader->load('nippou_template.xlsx'); 9 10 $book->setActiveSheetIndex(0); 11 $sheet = $book->getActiveSheet(); 12 13 $clonedWorksheet = clone $book->getSheetByName('nippou'); 14 $clonedWorksheet->setTitle('nippou_copy'); 15 $book->addSheet($clonedWorksheet); 16 17 $clonedWorksheet = clone $book->getSheetByName('nippou'); 18 $clonedWorksheet->setTitle('nippou_copy2'); 19 $book->addSheet($clonedWorksheet); 20 21 $clonedWorksheet = clone $book->getSheetByName('nippou'); 22 $clonedWorksheet->setTitle('nippou_copy3'); 23 $book->addSheet($clonedWorksheet); 24 25 header("Content-Description: File Transfer"); 26 header('Content-Disposition: attachment; filename="nippou_test_download.xlsx"'); 27 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 28 header('Content-Transfer-Encoding: binary'); 29 header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 30 header('Expires: 0'); 31 ob_end_clean(); //バッファ消去 32 $writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($book); 33 $writer->save('php://output'); 34 35?>
回答1件
あなたの回答
tips
プレビュー