인터넷이 발전함에 따라 특히 기업에서는 데이터 가져오기 및 내보내기에 대한 요구가 점점 더 많아지고 있습니다. 매우 인기 있는 사무용 소프트웨어인 Excel은 데이터 저장 및 처리에도 널리 사용됩니다. 따라서 ThinkPHP6를 사용하여 Excel을 가져오고 내보내는 방법이 매우 중요한 문제가 되었습니다. 이 문서에서는 ThinkPHP6을 사용하여 Excel 가져오기 및 내보내기 단계를 소개합니다.
1. Excel 내보내기
ThinkPHP6은 매우 편리한 Excel 내보내기 도구 클래스인 PHPExcel을 제공합니다. PHPExcel을 사용하여 데이터를 Excel 파일로 내보낼 수 있습니다.
1. json 파일에 PHPExcel 클래스 라이브러리를 추가합니다:
"require": { "phpoffice/phpexcel": "^1.8" },
PHPExcel 클래스 라이브러리를 설치하는 명령을 실행합니다:
composer install
2. Excel 내보내기 컨트롤러 만들기
Excel 내보내기 요청을 처리하는 컨트롤러 클래스 만들기:
namespace appdmincontroller; use PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx as Writer; class Excel extends Base { public function export() { // TODO: 导出Excel } }
3. 데이터 소스 구축
엑셀로 내보내기 전, 내보낼 데이터 소스를 준비해야 합니다. 일반적으로 데이터 소스를 가져오는 방법에는 두 가지가 있습니다.
(1) 데이터베이스에서 데이터 가져오기
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) 다른 데이터 소스에서 데이터 가져오기
일부 데이터를 Excel 파일로 내보내고 싶지만 해당 데이터가 저장되지 않은 경우 예를 들어 데이터베이스에서 일부 주문 정보를 Excel 등의 형식으로 내보내려고 합니다. 현재 이 데이터는 네트워크 API 인터페이스에서 얻는 등 다른 방법을 통해 얻을 수 있습니다.
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'); } }
2. Excel 가져오기
ThinkPHP6을 사용하여 Excel 가져오기를 처리하는 것도 매우 편리합니다. 또한 PHPExcel 클래스 라이브러리를 사용하여 구현됩니다.
1 PHPExcel 클래스 라이브러리를 설치합니다. Excel 내보내기 단계와 동일하게 PHPExcel First Class 라이브러리를 설치해야 합니다.
2. Excel 가져오기 컨트롤러 만들기
Excel 가져오기 요청을 처리하는 컨트롤러 클래스 만들기:
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(); } } }
3. Excel 파일 업로드
사용자가 가져올 Excel을 업로드할 수 있도록 보기에 업로드 양식을 추가해야 합니다. 문서.
<form method="post" action="admin/excel/import" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
4. 가져온 데이터 처리
Excel을 가져온 후 PHPExcel에서 제공하는 API를 통해 가져온 데이터를 얻을 수 있습니다. 위 코드에서는 다음 코드를 사용하여 데이터를 얻습니다.
$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; }
가져온 데이터는 $data 변수에 저장됩니다. 데이터베이스에 데이터를 삽입하는 등의 후속 데이터 처리 작업을 수행할 수 있습니다.
요약하자면 ThinkPHP6을 사용하여 Excel을 가져오고 내보내는 것은 비교적 간단합니다. PHPExcel 클래스 라이브러리를 사용하면 Excel 파일을 쉽게 읽고 내보낼 수 있습니다.
위 내용은 ThinkPHP6을 사용하여 Excel을 가져오고 내보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!