PHPExcel(백과사전: Microsoft의 OpenXML 표준 및 PHP 언어를 기반으로 Office Excel 문서를 조작하는 데 사용되는 PHP 클래스 라이브러리)을 사용하여 간단한 Excel 가져오기를 만들었습니다.
자, 이제 시작하겠습니다. ..
먼저 PHPExcel 클래스 라이브러리가 있어야 합니다. 여기를 클릭하여 https://github.com/Zmwherein/PHPExcel.git
을 다운로드한 다음 ThinkPHPLibraryVendor에 넣습니다(개인 취향, 임포트 가능한 한)
그림과 같이
PHPExcel.php는 엔트리 파일과 유사하게 들어가서 메소드가 어떻게 작성되어 있는지 볼 수 있습니다. 실행됩니다...
인터페이스는 다음과 같습니다.
먼저 파일이 업로드되었는지 판단해 보겠습니다. 최적화하고 더 잘 쓰겠지만 당분간 개인 능력은 한계가 있습니다) )
1 public function import() 2 { 3 // p($data_in_db); 4 if ( ! empty($_FILES)) 5 { 6 $upload = new \Think\Upload(); 7 $upload -> maxSize = 3145728 ; 8 $upload -> exts = array('xlsx', 'xls'); 9 $upload -> rootPath = './'; // 设置附件上传根目录 10 $upload -> savePath = '/Upload/excel/'; // 设置附件上传(子)目录 11 $upload -> subName = false; 12 $upload -> saveName = 'time'; 13 14 $info = $upload -> uploadOne($_FILES['import']); 15 16 if( ! $info) 17 { 18 $this->error($upload->getError()); 19 }
그럼 실행하세요 PHPExcel.php 및 PHPExcel/IOFactory.php 파일을 가져오고
1 //导入PHPExcel 和 IOFactory类 2 Vendor('PHPExcel.PHPExcel'); 3 Vendor('PHPExcel.PHPExcel.IOFactory');
가져오기 때문에 , createReader 메소드
가 호출됩니다.$objReader = \PHPExcel_IOFactory::createReader('Excel5');
업로드된 파일이 있는 경로를 설정합니다. 파일 로드
$objPHPExcel = $objReader -> load($file_path, $encode='utf-8');
여기서 우리가 말하는 것은 A에서 통과한 행 수입니다. E로 (직접 정의, 원하는 것을 선택) 여기서는 2번부터 시작해야 합니다. 첫 번째 행은 데이터가 아니라 헤더이기 때문입니다
1 $sheet = $objPHPExcel -> getSheet(0); 2 $highestRow = $sheet -> getHighestRow(); // 取得总行数 3 // p($highestRow); 4 // $highestColumn = $sheet->getHighestColumn(); // 取得总列数 5 6 for($i=2;$i getActiveSheet() -> getCell("A".$i)->getValue(); 9 $data['company'] = $objPHPExcel -> getActiveSheet() -> getCell("B".$i)->getValue(); 10 $data['mobile'] = $objPHPExcel -> getActiveSheet() -> getCell("C".$i)->getValue(); 11 $data['category'] = $objPHPExcel -> getActiveSheet() -> getCell("D".$i)->getValue(); 12 $data['mark'] = $objPHPExcel -> getActiveSheet() -> getCell("E".$i)->getValue(); 13 14 $allData[] = $data; 15 } 16 // p($allData);
테스트 테이블은 이렇습니다
이제 $allData를 출력하고 보세요
보세요, 데이터가 나왔습니다...
다음 단계는 다음으로 가져오는 것입니다. 데이터베이스 ->가져오기 전에 작은 판단을 해야 합니다. 예를 들어 데이터베이스의 전화번호가 나를 따르도록 하려면 가져오려는 데이터가 동일하면 다음과 같이 가져오지 마세요. -> ; 더 좋은 방법 있으신 분 계신가요?
1 if (empty($allData)) 2 { 3 $this -> error(C('MESSAGE.ERROR_NODATA')); 4 } 5 $data_in_db = M('Excel') -> field('mobile') -> select();//表Excel里所有数据 6 foreach ($data_in_db as $key => $val) 7 { 8 foreach ($allData as $k => $v) 9 { 10 if ($val['mobile'] == $v['mobile']) 11 { 12 unset($allData[$k]); 13 } 14 } 15 }
가져올 때 두가지 방법이 있습니다. sql을 splice하는 것이고, 또 하나는 foreach 루프를 이용하여 import하는 것입니다
실제 테스트에서는 첫 번째 방법이 sql import를 splice하는 것이 훨씬 빠릅니다... 하지만 import하는 경우 데이터가 너무 크면 스플라이싱된 SQL이 매우 길어서 데이터가 상대적으로 클 것입니다...
가끔 실행 파일 타임아웃 오류가 발생하거나 1153 ‘보다 큰 패킷이 발생하는 경우가 있습니다. ;max_allowed_packet’바이트 OR
서버가 바로 멈추고 다음과 같은 오류가 보고됩니다
이 경우 my.ini에서 max_allowed_packet을 약간 더 크게 설정하도록 수정해야 합니다. , MySql을 다시 시작하세요
좋습니다.. 잠시만 기다리면 거의 2W의 데이터를 가져옵니다(^_^)
이상입니다. 제가 작성한 insert 문
1 $sql = "INSERT INTO `db_excel` (". implode(',',array_keys($allData[0])) .") VALUES "; 2 foreach ($allData as $key => $val) 3 { 4 $sql .= "("; 5 $sql .= "'".implode("','", $val)."'"; 6 $sql .= "),"; 7 } 8 $sql = rtrim($sql,','); 9 // 出错返回false 否则返回成功行数 10 $res = D('Excel') -> execute($sql); 11 if ($res === false) 12 { 13 $this -> error(C('MESSAGE.ERROR_IMPORT')); 14 } 15 else if ($res > 0) 16 { 17 $this -> success(C('MESSAGE.SUCCESS_IMPORT'), U('Excel/index')); 18 } 19 else if ($res === 0) 20 { 21 $this -> success(C('MESSAGE.SUCCESS_IMPORT_0'), U('Excel/index')); 22 }
좋습니다. 위는 PHPExcel을 사용하여 Excel 파일을 가져오는 것입니다. .
아직 수정해야 할 부분이 많은데, 지적해 주시면 좋겠습니다.
위 내용은 PHPExcel을 사용하여 Thinkphp의 Excel을 가져오는 방법에 대한 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

뜨거운 주제



