Rumah >rangka kerja php >ThinkPHP >Bagaimana untuk menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel?
Dengan perkembangan Internet, terdapat peningkatan keperluan untuk import dan eksport data, terutamanya dalam perusahaan. Sebagai perisian pejabat yang sangat popular, Excel juga digunakan secara meluas untuk penyimpanan dan pemprosesan data. Oleh itu, cara menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel telah menjadi isu yang sangat penting. Artikel ini akan memperkenalkan langkah-langkah untuk import dan eksport Excel menggunakan ThinkPHP6.
1. Eksport Excel
ThinkPHP6 menyediakan kelas alat eksport Excel yang sangat mudah - PHPExcel Anda boleh menggunakan PHPExcel untuk mengeksport data ke dalam fail Excel 🎜 >1. Pasang pustaka kelas PHPExcel
Tambah pustaka kelas PHPExcel dalam fail composer.json:
"require": { "phpoffice/phpexcel": "^1.8" },
Jalankan arahan untuk memasang pustaka kelas PHPExcel:
rreee2. Cipta Pengawal eksport Excel
Buat kelas pengawal untuk mengendalikan permintaan eksport Excel:
composer install
3 Bina sumber data
Sebelum mengeksport Excel, anda perlu bersedia data yang akan dieksport sumber. Biasanya terdapat dua cara untuk mendapatkan sumber data:
(1) Dapatkan data daripada pangkalan data
namespace appdmincontroller; use PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx as Writer; class Excel extends Base { public function export() { // TODO: 导出Excel } }
(2) Dapatkan data daripada sumber data lain
Jika kita mahu Sesetengah data dieksport ke fail Excel, tetapi data ini tidak disimpan dalam pangkalan data Contohnya, kami ingin mengeksport beberapa maklumat pesanan dalam bentuk Excel, dsb. Pada masa ini, kita boleh mendapatkan data ini melalui kaedah lain, seperti mendapatkannya daripada antara muka API rangkaian.
namespace appdmincontroller; use appdminmodelUser as UserModel; use PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx as Writer; class Excel extends Base { public function export() { $users = UserModel::select()->toArray(); $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', 'ID'); $sheet->setCellValue('B1', '姓名'); $sheet->setCellValue('C1', '性别'); $sheet->setCellValue('D1', '年龄'); $row = 2; foreach ($users as $user) { $sheet->setCellValue('A' . $row, $user['id']); $sheet->setCellValue('B' . $row, $user['name']); $sheet->setCellValue('C' . $row, $user['gender']); $sheet->setCellValue('D' . $row, $user['age']); $row++; } $writer = new Writer($spreadsheet); $writer->save('users.xlsx'); } }
2. Import Excel
Ia juga sangat mudah untuk menggunakan ThinkPHP6 untuk memproses import Excel Ia juga dilaksanakan menggunakan perpustakaan kelas PHPExcel adalah seperti berikut:
1. Pasang pustaka kelas PHPExcel
Langkahnya adalah sama seperti eksport Excel, anda perlu memasang perpustakaan kelas PHPExcel terlebih dahulu.
2. Cipta Pengawal Import Excel
Buat kelas pengawal untuk mengendalikan permintaan import Excel:
namespace appdmincontroller; use GuzzleHttpClient; use PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx as Writer; class Excel extends Base { public function export() { $client = new Client(); $response = $client->get('https://api.example.com/orders'); $orders = json_decode($response->getBody()->getContents(), true); $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', '订单编号'); $sheet->setCellValue('B1', '下单人'); $sheet->setCellValue('C1', '订单金额'); $row = 2; foreach ($orders as $order) { $sheet->setCellValue('A' . $row, $order['id']); $sheet->setCellValue('B' . $row, $order['user']); $sheet->setCellValue('C' . $row, $order['amount']); $row++; } $writer = new Writer($spreadsheet); $writer->save('orders.xlsx'); } }
3 muat naik borang ke paparan untuk membolehkan pengguna memuat naik fail Excel untuk diimport.
namespace appdmincontroller; use PhpOfficePhpSpreadsheetIOFactory; class Excel extends Base { public function import() { $file = request()->file('file'); $info = $file->validate(['ext' => 'xlsx'])->move('uploads'); if ($info) { $filename = 'uploads/' . $info->getSaveName(); $reader = IOFactory::createReader('Xlsx'); $spreadsheet = $reader->load($filename); $sheet = $spreadsheet->getActiveSheet(); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); $data = []; for ($row = 2; $row <= $highestRow; $row++) { $rowData = []; for ($column = 'A'; $column <= $highestColumn; $column++) { $cellValue = $sheet->getCell($column . $row)->getValue(); $rowData[] = $cellValue; } $data[] = $rowData; } unlink($filename); dump($data); } else { echo $file->getError(); } } }
4. Memproses data yang diimport
Selepas mengimport Excel, kami boleh mendapatkan data yang diimport melalui API yang disediakan oleh PHPExcel. Dalam kod di atas, kami menggunakan kod berikut untuk mendapatkan data:
<form method="post" action="admin/excel/import" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
Data yang diimport disimpan dalam pembolehubah $data Kami boleh melakukan operasi pemprosesan data seterusnya, seperti memasukkan data ke dalam pangkalan data.
Ringkasnya, menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel adalah agak mudah Dengan menggunakan perpustakaan kelas PHPExcel, kami boleh membaca dan mengeksport fail Excel dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan ThinkPHP6 untuk mengimport dan mengeksport Excel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!