• ベストアンサー

PHP spreadsheet の書き込みについて

お世話になります。 PHP Spreadsheet でExcel シートを作るときは、全く新しいものを作る時だけなのでしょうか?それともすでにできているシートの任意のセルにデータを追加することもできるのでしょうか? 出来るとすればどのようにコードを書いていけばよいのでしょうか。 自分は一応Excelシートからのデータ読み込みと、全く新しいシートを作ることはできていますが、既存シートへの追加方法がわかりません。 詳しい方がいらっしゃいましてら、よろしく教えていただきたく、お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.2

Xlsx や Spreadsheetを new すると新しいものを作ってしまいます。 すでにあるものを参照する場合はこんな感じになります。 ---- use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader; use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer; $filepath = 'files/demo.xlsx'; $reader = new Reader(); $spreadsheet = $reader->load($filepath); $sheet = $spreadsheet->getSheetByName("data"); $sheet->setCellValue('A1', date('Y-m-d H:i:s')); $writer = new Writer($spreadsheet); $writer->save($filepath); ----

papashiroSooke
質問者

お礼

ご回答有難うございます。 既存のExcelファイルにデータを追加することが出来ました。 これで、今までは手作業でやっていたデータ入力がずっとスピードアップ出来ます。

その他の回答 (1)

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.1

すでにできているシートの任意のセルにデータを追加できます。 いろいろ省略していますが、こんな感じでしょうか。 // すでにできているシートを取得(0からはじまるインデックス) $sheet = $spreadsheet->getSheet(0); $sheet->setCellValue('任意のセル', 'データ');

papashiroSooke
質問者

お礼

早速にご回答をいただき、有難うございます。 なぜか私のプログラムでは、毎回新しいExcelファイルが生成されてしまいます。 そもそも自分がデータを追加したいExcelのワークブックはどのように指定するのかがわかりません。それで初めにあるテーブルの形をしたファイル "demo.xlsx" を用意しておき、PHP内部でのバーチャルファイルである$sheet でセルにいろいろな値を空きこんだ後、 $writer = new Xlsx($sheet); $writer->save('files/demo.xlsx'); としてセーブしますが、初めに用意してあるファイルには書き込まれず、新しいファイルが出来てしまいます。 たとえば既にできている demo.xlsx というものがあるとして、その中の "data" という名前の付いたシートを $sheet として認識してもらうには、次のようなコードの中でどうすればよいのでしょうか。 $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); この段階のどこかででdemo.xlsx を指定することが必要なのだと思いますが、それがわかりません。 どうぞ詳しく教えてください。

関連するQ&A