これを組み合わせると???こういうことってないですか?webでの管理システムを設計するときに「CSVでインポートやエクスポート機能を付けてよ」って言われる事があります。インポートに関しては一括登録や一括削除や更新など割とリスクが大きいのですが、エクスポートはあったりします。CSVなので本来はカンマ区切りで並べてtext/csvとかで吐き出せば簡単なのですが、下記のような不具合が発生する可能性があります。データの文字列にカンマが入ってるので、ズレる上記を防ぐためにダブルクォートで文字列を囲うも文字列にダブルクォートが入っている電話番号ハイフンの場合「09012345678」がExcelで開くと「9012345678」と数値になるCSV上は特に電話番号などの文字列→数値はCSV上は正しいのですが、Excelで管理する人が多いため、この部分をどうにかしないとダメだと思います。これはオペレーション上の問題であり、正直システムとしてはどうしようもない部分なのも事実です。「最初からExcelファイルで処理すれば良いのでは?」って事でPHPを使ってExcelファイルを操作する方法をまとめました。ここでいうExcelファイルですが、Excel97-2003形式の「.xls」ではなくExcel2007以降の「.xlsx」形式のみ対応となります。古いファイルは一度.xlsx形式に変換してください。インストール方法みんな大好きComposerを使います。ちなみにインストールするライブラリは「PhpSpreadsheet」というものを使います。phpoffice/phpspreadsheetこれにより、PhpSpreadsheetがプロジェクトに追加されます。Spreadsheet();インストールがしっかりとできていれば、スムーズに行きます。Excelファイルのエクスポート方法それではExcelファイルのエクスポートを行います。基本的にはCSVファイルをエクスポートする感じで、連想配列に値を放り込んでそれをライブラリを使って出力します。Xlsx($spreadsheet);$writer->save('example.xlsx');細かく説明していきます。今回はMySQLのデータをExcelで出力してヘッダーのセルの色を灰色にするという感じです。MySQL周りについては説明は割愛します。PhpOffice\PhpSpreadsheet\Style\Fill;上の方でライブラリの読み込みを行いましたが、今回はセルの装飾を行うので1行追加してます。'氏名','電話番号',"フリーテキスト"],);出力するデータを連想配列$dataに入れてます。1行名はヘッダー行にしたいのでここに列のタイトルを入れています。結果セットを閉じる$result->close();}ここはMySQLからデータを入れて連想配列に流し込んでます。「電話番号がハイフンなしで入れてるよ」「文字列の中にカンマがあるよ」というのをわかりやすくするため固定で入れてます。'A1');fromArray()はセルA1から連想配列を展開するよってことです。これで自動的にセルの中に文字列を入れてくれます。カーソルをA1セルに設定$sheet->setSelectedCell('A1');セルの横幅は初期値なので、これを最後にすることで、横幅を自動調整してくれます。内容によっては見栄えが悪くなる可能性があるのでそこは要調整です。最後にカーソルの位置をA1に指定します。Xlsx($spreadsheet);$writer->save($filePath);Excelファイルに書き出しです。これはサーバーに保存してますが、ダウンロードさせたい場合はreadFileで吐き出せばダウンロードできます。これだけで簡単にExcelファイルで出力できます!電話番号もちゃんと文字列として処理してくれるので、先頭の0抜けがありません!今後はExcel出力でいいのではと言う気がします。出力したCSVファイルを別のシステムでインポートするとかだとCSVはマズいので、CSV出力しましょう。ちなみに・・・PhpSpreadsheetでもCSV出力が可能です。今度は逆にExcelファイルを読み込んでテーブルにインサートする方法をまとめます。HTMLからPOSTでExcelファイルをサーバーに保存するなどは今回は実装しません。'データベースへのデータINSERTが完了しました。'データベースへのデータINSERTが完了しました。';CSVよりもシンプルにインポートすることができます。$worksheet->toArray();実質的にこれだけでできるのは楽すぎますね。バリデーションチェックだけはしっかりと行いましょう!これを組み合わせると???インポートとエクスポートを組み合わせると、例えば何かの書類のテンプレートをExcelで作成し、そこにセルを指定して文字を入力し、PDFで出力することも可能かなと思います。次回はその形でExcelで作ったPDFファイルの作成を紹介できればと思います。※この記事は2024年10月現在の情報です。※この記事は2024年10月現在の情報です。※この記事は2024年10月現在の情報です。(エイトビット)東京都目黒区でWebサイト制作、Webシステム開発などを行っております。コーポレートサイトやWebサービスの企画・提案を得意としており、自社での経験を元にアイデアをカタチにするお手伝いをさせていただいております。見積りシミュレーションをご用意いたしました。※この記事は2024年10月現在の情報です。※この記事は2024年10月現在の情報です。※この記事は2024年10月現在の情報です。※この記事は2024年10月現在の情報です。WordPressでも利用することは可能ですが、WordPressはセッション関数を推奨していません。