>  기사  >  PHP 프레임워크  >  ThinkPHP6을 사용하여 Excel 가져오기 및 내보내기를 구현하는 방법

ThinkPHP6을 사용하여 Excel 가져오기 및 내보내기를 구현하는 방법

WBOY
WBOY원래의
2023-06-21 18:01:414666검색

인터넷의 급속한 발전과 함께 Excel은 기업과 개인의 일상 업무에서 중요한 도구 중 하나가 되었습니다. 따라서 Excel의 가져오기 및 내보내기 기능은 많은 응용 프로그램에서 필수적인 부분이 되었습니다. ThinkPHP6을 사용하여 Excel 가져오기 및 내보내기를 구현하는 방법은 무엇입니까? 아래에서 이 글을 통해 자세히 소개하겠습니다.

1. ThinkPHP6 시스템 환경 검증

ThinkPHP6을 사용하여 Excel 가져오기 및 내보내기를 구현하려면 먼저 시스템 환경 요구 사항을 충족해야 합니다. ThinkPHP6에서는 작곡가를 사용하여 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 테이블의 헤더를 명확하게 하기 위해 테이블의 헤더 정보를 생성하는 코드를 작성할 수 있습니다. 아래 코드에서는 이를 달성하기 위해 루프를 사용합니다.

$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 테이블을 .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 가져오기

ThinkPHP6는 Excel 내보내기 외에도 Excel 가져오기 기능도 구현할 수 있습니다. 다음으로 ThinkPHP6에서 Excel Import를 구현하는 방법을 소개하겠습니다.

  1. 엑셀 파일 업로드 및 데이터 읽기

엑셀을 가져오기 전에 먼저 엑셀 파일을 업로드해야 합니다. 여기서는 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 테이블 데이터를 얻은 후에는 데이터를 탐색하고 배열을 사용하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.