> 백엔드 개발 > PHP 튜토리얼 > PHP에서 Excel 파일을 읽는 방법

PHP에서 Excel 파일을 읽는 방법

巴扎黑
풀어 주다: 2016-11-29 09:57:42
원래의
1640명이 탐색했습니다.

PHP로 EXCEL을 읽는 데 일반적으로 사용되는 세 가지 방법이 있으며 각각 고유한 장점과 단점이 있습니다. 저는 개인적으로 세 번째 방법을 여러 플랫폼에서 사용할 수 있기 때문에 추천합니다.

1..csv 형식으로 읽어옵니다.

.xls를 .csv 텍스트 형식으로 변환한 후 PHP를 사용하여 파일을 분석합니다. 이는 PHP가 텍스트를 분석하는 것과 다르지 않습니다.

장점: 크로스 플랫폼, 상대적으로 높은 효율성, 읽고 쓸 수 있습니다.

단점: .csv 파일만 직접 사용할 수 있습니다. .xls 바이너리 파일을 자주 사용하는 경우 수동으로 변환해야 하며 자동화할 수 없습니다. 파일에는 SHEET이 하나만 있습니다.

PHP에는 자체적인 analyze.csv 함수가 있습니다: fgetcsv

array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )

handle fopen(), popen() 또는 fsockopen()에 의해 생성된 유효한 파일 포인터입니다.

길이(선택 사항)는 CVS 파일의 가장 긴 줄보다 커야 합니다. 이 매개변수는 PHP 5에서는 선택사항입니다. 이 매개변수를 생략하면(PHP 5.0.4 이상 버전에서는 0으로 설정) 길이에는 제한이 없으나 실행 효율성에 영향을 줄 수 있습니다.

delimiter(선택 사항)는 필드 구분 기호(1자만 허용)를 설정하며 기본값은 쉼표입니다.

인클로저(선택 사항)는 필드 줄 바꿈 문자(한 문자만 허용됨)를 설정하며 기본값은 큰따옴표입니다. 이 매개변수는 PHP 4.3.0에 추가되었습니다. fgets()와 유사하지만 fgetcsv()는 읽기 행을 구문 분석하고 CSV 형식의 필드를 찾아 해당 필드가 포함된 배열을 반환한다는 점만 다릅니다.

fgetcsv()는 파일 끝이 발견되는 경우를 포함하여 오류가 발생하면 FALSE를 반환합니다.

참고: CSV 파일의 빈 줄은 단일 null 필드가 포함된 배열로 반환되며 오류로 처리되지 않습니다.

물론 문자열을 직접 분석할 수도 있습니다.



fputcsv 함수를 사용하여 행의 형식을 CSV로 지정하고 파일 포인터를 쓸 수도 있습니다.

2. ODBC 연결 데이터소스

장점: cvs, xls 등 다양한 형식 지원 읽기 및 쓰기를 지원하고 표준 SQL 언어를 사용하며 SQLSERVER 및 MYSQL 데이터베이스와 거의 동일합니다.

단점: Windows 서버 지원

3. PHP 사용자 정의 클래스

장점: 크로스 플랫폼. 일부 클래스는 쓰기 작업을 지원합니다. .xls 바이너리 파일 지원

일반적으로 사용되는 클래스에는 phpExcelReader 및 PHPExcel이 있습니다. 후자는 읽기 및 쓰기를 지원하지만 php5.2 이상이 필요합니다.

phpExcelReader는 특별히 파일을 읽는 데 사용됩니다. 테이블의 모든 내용을 포함하는 배열을 반환합니다.

본 클래스에서 사용하는 방식은 홈페이지에서 다운로드한 압축파일의 example.php를 참고하시면 됩니다.

하지만 다운로드했는데(버전 2009-03-30) 주의할 점이 두 가지 있습니다.

reader.php의 다음 줄을 수정해야 합니다

변경 require_once 'Spreadsheet/Excel/Reader/OLERead.php';



$data->에서 require_once 'oleread.inc'로 변경; setOutputEncoding('CP1251′);

은 $data->setOutputEncoding('CP936′)입니다.

nl2br(htmlentities($data->sheets[$sheet]['cells) ' ][$row][$col]));

은 $table_output[$sheet] .= nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row ] [$col]));

그렇지 않으면 중국어에 문제가 생길 수 있습니다.

번체 중국어의 경우 CP950, 일본어의 경우 CP932로 변경 가능하며, 자세한 사항은 코드페이지 안내를 참고하세요.

$data->read('jxlrwtest.xls')를 자신의 엑셀 파일 이름으로 수정하세요. zip 파일에 첨부된 jxlrwtest.xls가 깨져야 합니다.

다운로드 주소는 다음과 같습니다.

phpExcelReader: http://sourceforge.net/projects/phpexcelreader/

PHPExcel: http://www.codeplex.com/ PHPExcel /Wiki/View.aspx?title=Documents&referringTitle=Home

때때로 프로그램을 작성할 때 백그라운드에서 컴퓨터 시험 점수, 전화번호부 데이터 쿼리 등 많은 양의 데이터를 데이터베이스로 가져와야 하는 경우가 있습니다. 등은 일반적으로 Excel에 저장됩니다. 예, 이때 데이터를 csv 파일로 내보낸 다음 다음 프로그램을 사용하여 백그라운드에서 일괄적으로 데이터베이스로 데이터를 가져올 수 있습니다.

다음은 주요 프로그램 부분입니다:


//시간 가져오기 함수 정의
function getmicrotime(){
목록 ($usec, $sec) = 폭발(" ",microtime())
return ((float)$usec + (float)$sec)
?> ;?php
$time_start = getmicrotime()
include("db.inc.php");//데이터베이스에 연결
$db=new testcsv;
$handle = fopen("test.csv","r")
$sql="score(idcard,names,num,sex,nation,score) 값에 삽입("; 
while ($data = fgetcsv ($handle, 1000, ",")) { 

  $num = 개수 ($data); 
  for ($c=0; $c < $num; $c++) { 
      if($c==$num-1){$sql=$ sql.$data[$c].")";break;} 
      $sql=$sql.$data[$c].","; 
  } 
"
" 인쇄; 
echo $sql."
"; 
$db->query($sql); 
echo "sql语句执行成功!
"; 
$sql="score(idcard,names,num,sex,nation,score) 값에 삽입("; 

fclose($handle); 
$time_end = getmicrotime();
$time = $time_end - $time_start;
echo "程序执行时间:".$time."秒";
?

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿