ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 を使用して Excel のインポートとエクスポートを実装する方法

ThinkPHP6 を使用して Excel のインポートとエクスポートを実装する方法

WBOY
WBOYオリジナル
2023-06-21 18:01:414741ブラウズ

インターネットの急速な発展に伴い、Excel は企業や個人の日常の事務作業において重要なツールの 1 つになりました。したがって、Excel のインポートおよびエクスポート機能は、多くのアプリケーションで必要な部分になっています。 ThinkPHP6 を使用して Excel のインポートとエクスポートを実装するにはどうすればよいですか?以下、この記事で詳しく紹介していきます。

1. ThinkPHP6 システム環境の確認

ThinkPHP6 を使用して Excel インポートおよびエクスポートを実装するには、まずシステム環境要件を満たす必要があります。 ThinkPHP6 では、composer を使用して phpoffice/phpspreadsheet ライブラリをインストールし、Excel 処理関数を実装できます。コマンド ラインで次のコマンドを実行してインストールします:

composer require phpoffice/phpspreadsheet

インストール後、コントローラー層に PhpOfficePhpSpreadsheetSpreadsheet および PhpOfficePhpSpreadsheetWriterXlsx クラス ライブラリを導入します。クラス このライブラリはコードビハインドで使用されます。

2. Excel エクスポート

  1. Excel データのエクスポート

ThinkPHP6 を使用して Excel エクスポートを実装するには、まずデータを Excel にインポートする必要があります。必要に応じて、コントローラー層に対応するコードを記述できます。たとえば、学生情報をエクスポートする場合、データベースにクエリを実行することで関連情報を取得できます。

use appcommonmodelStudent;

public function export()
{
    $students = Student::all();
}
  1. Excel テーブルのヘッダーの設定

Excel テーブルのヘッダーは非常に重要な部分です。 Excel テーブルのヘッダーを明確にするために、テーブルのヘッダー情報を生成するコードを作成できます。以下のコードでは、ループを使用してこれを実現します。

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('学生信息表');

$sheet->setCellValue('A1', '序号');
$sheet->setCellValue('B1', '学号');
$sheet->setCellValue('C1', '姓名');
$sheet->setCellValue('D1', '性别');
$sheet->setCellValue('E1', '日期');
  1. Excel テーブルへのデータの書き込み

次に、取得したデータを Excel テーブルに書き込みます。データをループし、各生徒の情報を順番にテーブルに書き込みます。

foreach ($students as $key => $item) {
    $num = $key + 2;
    $sheet->setCellValue('A' . $num, $num - 1);
    $sheet->setCellValue('B' . $num, $item->number);
    $sheet->setCellValue('C' . $num, $item->name);
    $sheet->setCellValue('D' . $num, $item->sex);
    $sheet->setCellValue('E' . $num, $item->date);
}
  1. Excel テーブルをローカルに出力、保存

最後に、生成した Excel テーブルをローカルに出力、保存します。以下のコードでは、writer を使用して Excel テーブルを .xlsx 形式で保存し、ブラウザーに出力します。

$writer = new Xlsx($spreadsheet);
$filename = "学生信息表.xlsx";
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename=' . $filename);
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit();

3. Excel インポート

Excel のエクスポートに加えて、ThinkPHP6 は Excel のインポート機能も実装できます。次に、ThinkPHP6でExcelインポートを実装する方法を紹介します。

  1. Excel ファイルのアップロードとデータの読み取り

Excel をインポートする前に、まず Excel ファイルをアップロードする必要があります。ここでは、ThinkPHP6 に付属のファイル アップロード クラス ライブラリを使用します。アップロードが成功したら、PhpOfficePhpSpreadsheetIOFactory クラス ライブラリのメソッドを使用して、アップロードされた Excel ファイルのデータを読み取ります。

use thinkacadeFilesystem;

$uploadFile = request()->file('file');
$saveName = Filesystem::disk('public')->putFile('excel', $uploadFile);
$filePath = Filesystem::disk('public')->path($saveName);

$spreadsheet = PhpOfficePhpSpreadsheetIOFactory::load($filePath);
$sheet = $spreadsheet->getActiveSheet();
$highestRow = $sheet->getHighestRow();
$data = [];
  1. Excel テーブルを走査してデータを取得する

Excel テーブル データを取得した後、データを走査し、配列を使用してデータの各行を保存する必要があります。エクセルの表で。

for($i = 2; $i <= $highestRow; $i++){
    $item['number'] = $sheet->getCellByColumnAndRow(1, $i)->getValue();
    $item['name'] = $sheet->getCellByColumnAndRow(2, $i)->getValue();
    $item['sex'] = $sheet->getCellByColumnAndRow(3, $i)->getValue();
    $item['date'] = date('Y-m-d H:i:s',$sheet->getCellByColumnAndRow(4, $i)->getValue() - 25569)*86400;
    $data[] = $item;
}
  1. Excel テーブルをデータベースにインポートします

最後に、Excel テーブルのデータをデータベースにインポートします。ここでは、ThinkPHP6 に付属の ORM 操作を使用して、データをデータベース テーブルに保存します。

use appcommonmodelStudent;

Db::startTrans();
try {
    Student::insertAll($data);
    Db::commit();
} catch (Exception $e) {
    Db::rollback();
    return json(['code' => '500', 'msg' => '操作失败']);
}
return json(['code' => '200', 'msg' => '操作成功']);

概要

この記事では、ThinkPHP6 を使用して Excel のインポートおよびエクスポート機能を実装する方法を詳しく紹介します。 PhpOfficePhpSpreadsheet クラス ライブラリを使用すると、Excel 関連の操作を簡単に完了できます。 Excel のインポートおよびエクスポート機能は企業管理システムで広く使用されており、関連スキルを理解し習得することは開発者にとって大きな助けとなります。

以上がThinkPHP6 を使用して Excel のインポートとエクスポートを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。