実現したいこと
テンプレートのexcelを読み込み、1ページ分のエリアをコピーして、同じシートの次ページなるエリアにペーストしたい。
前提
phpspreadsheetを使いテンプレートのexcelファイルを読み込み、印刷するとき次のページになるように下にペーストしてページ数分のテンプレートのファイルを作成したいです。
本当は簡単にスタイルや行の高さを含めてエリアコピーして、次々にペーストしたいです。
わからないのでセルの値とスタイルをエリアコピーしてペーストするプログラムをかいて実行したんですが、下記のようなエラーが出てしまいました。
発生している問題・エラーメッセージ
Uncaught PhpOffice\PhpSpreadsheet\Exception: Cell coordinate string can not be a range of cells
該当のソースコード
php
1 use PhpOffice\PhpSpreadsheet\Spreadsheet; 2 use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader; 3 use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer; 4 5 $reader = new Reader(); 6 $spreadsheet = $reader->load('./template/test.xlsx'); 7 8 $srcrange = $sheet->rangeToArray("A1:U22"); 9 $style = $sheet->getStyle("A1:U22"); 10 11 $idx=0; 12 foreach ($slipnoes_arr as $value) { 13 $idx++; 14 if($idx > 1){ 15 $addrow = ($idx - 1) * 22 + 1; 16 $dstrange = "A".strval($addrow).":"."U".strval($addrow + 21); 17 $sheet->fromArray($srcrange, null, $dstrange); 18 $sheet->duplicateStyle($style, $dstrange); 19 } 20 } 21 22 $writer = new Writer($spreadsheet); 23 $writer->save($outputfile); 24 exit();
補足情報(FW/ツールのバージョンなど)
php7.1.8
あなたの回答
tips
プレビュー