찾다
php教程php手册Thinkphp는 PHPExcel을 사용하여 Excel을 가져옵니다.

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)를 참고하세요!



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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기