前提・実現したいこと
ひな形となるシートをコピーし、新しくコピーしたシート側に各種データを埋め込む機能を実装中に以下のエラーメッセージが発生しました。
生成されたExcelファイルが破損してしまいます。
何が問題なのかが理解できず困っております
ご教示いただけますでしょうか、よろしくお願いします
【環境】
Linux側 | Windows側 |
---|---|
CentOS7 + PHP7.3.19 + phpspreadsheet(1.13.0) | Windows10 + Excel2019 |
発生している問題・エラーメッセージ
phpで生成されたExcelファイルを開くと下記のメッセージが表示されます。
該当のソースコード
<?php require '../phpLibs/PhpSpreadsheet/vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader; use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter; use PhpOffice\PhpSpreadsheet\Reader\Xls as XlsReader; use PhpOffice\PhpSpreadsheet\Writer\Xls as XlsWriter; use PhpOffice\PhpSpreadsheet\Style\Style; use PhpOffice\PhpSpreadsheet\Style\Border; use PhpOffice\PhpSpreadsheet\Style\Fill; use PhpOffice\PhpSpreadsheet\Style\Color; use PhpOffice\PhpSpreadsheet\Style\Conditional; use PhpOffice\PhpSpreadsheet\Shared\Date; use PhpOffice\PhpSpreadsheet\Document\Properties; require '../phpLibs/Ginq/src/Ginq.php'; require '../config.php'; $reader = new XlsxReader(); $spreadsheet = $reader->load('../tmp/新規 Microsoft Excel ワークシート.xlsx'); $spreadsheet->setActiveSheetIndex(0); $mastersheet = $spreadsheet->getSheetByName('Sheet1'); $worksheet = clone $mastersheet; $worksheet->setTitle('シート1'); $spreadsheet->addSheet($worksheet); $worksheet->setCellValue('A1','かきこみ'); $writer = new XlsxWriter($spreadsheet); $writer->save('../tmp/TEST_generate.xlsx');
試したこと
- Windows10で右クリックして「新規作成」→「Microsoft Excel ワークシート」の操作を行って
新規 Microsoft Excel ワークシート.xlsx を作成し、何も変更していないファイルを
テンプレートとして使用し、上記プログラムを実行。
⇒ファイル破損のメッセージは表示されない。
- Windows10で右クリックして「新規作成」→「Microsoft Excel ワークシート」の操作を行って
新規 Microsoft Excel ワークシート.xlsx を作成し、適当なセルに値を入力して保存。
保存したファイルをテンプレートとして使用し、上記プログラムを実行。
⇒ファイル破損のメッセージが表示される。
- .xlsxではなく、.xlsファイルをテンプレートとして使用、上記プログラムを実行。
⇒ファイル破損のメッセージが表示される。
- テンプレートとなるファイル名を TEST.xlsxに変更して、上記プログラムを実行。
⇒ファイル破損のメッセージが表示される。
- セルに値を書き込む箇所をコメントにし、シートをコピーするだけでも破損していました。
// $worksheet->setCellValue('A1','かきこみ');
⇒ファイル破損のメッセージが表示される。
補足情報(FW/ツールのバージョンなど)
まだ回答がついていません
会員登録して回答してみよう