>  기사  >  백엔드 개발  >  PHP로 EXCEL을 읽는 방법

PHP로 EXCEL을 읽는 방법

WBOY
WBOY원래의
2016-08-08 09:31:061517검색

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

1..csv 형식으로 읽기
.xls를 .csv 텍스트 형식으로 변환한 다음 PHP를 사용하여 파일을 분석하는데 이는 PHP가 텍스트를 분석하는 것과 다르지 않습니다.
장점: 크로스 플랫폼, 상대적으로 높은 효율성, 읽고 쓸 수 있습니다.
단점: .csv 파일만 직접 사용할 수 있습니다. .xls 바이너리 파일을 자주 사용하는 경우 수동으로 변환해야 하며 자동화할 수 없습니다. 파일에는 SHEET이 하나만 있습니다.

PHP에는 자체적인 analyze.csv 기능인 fgetcsv가 있습니다

배열 fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )
fopen(), popen() 또는 fsockopen()에 의해 생성된 유효한 파일 포인터입니다.
length(선택 사항)는 CVS 파일의 가장 긴 줄보다 커야 합니다. 이 매개변수는 PHP 5에서는 선택사항입니다. 이 매개변수를 생략하면(PHP 5.0.4 이상 버전에서는 0으로 설정) 길이에 제한은 없으나 실행 효율성에 영향을 줄 수 있습니다.
delimiter(선택 사항)는 필드 구분 기호(한 문자만 허용됨)를 설정하며 기본값은 쉼표입니다.
엔클로저(선택 사항)는 필드 둘러싸기 문자(한 문자만 허용됨)를 설정하며 기본값은 큰따옴표입니다. 이 매개변수는 PHP 4.3.0에 추가되었습니다. fgets() 와 유사하지만, fgetcsv()는 읽기 행을 구문 분석하고 CSV 형식의 필드를 찾아 해당 필드가 포함된 배열을 반환한다는 점만 다릅니다.
fgetcsv()는 파일의 끝을 발견할 때를 포함하여 오류가 발생하면 FALSE를 반환합니다.
참고: CSV 파일의 빈 줄은 단일 null 필드를 포함하는 배열로 반환되며 오류로 처리되지 않습니다.

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

예:

<?php
$row = 1;
echo "<pre class="brush:php;toolbar:false"><table border=1>";
$handle = fopen("three.csv","r");
while ($data = fgetcsv($handle, 1000, ",")) {
	$num = count($data);
	$row++;
	echo "<tr align=center>";
	for ($c=0; $c < $num; $c++) {
		echo "<td>".$data[$c]."</td>";
	}
	echo "</tr>";
}
echo "</table>
"; fclose($handle); ?>

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

2. ODBC 연결 데이터소스

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

3. PHP 커스텀 클래스(파일이 좀 커서 다음 장에 넣습니다)

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

test.php
$data->setOutputEncoding('CP1251');
수정

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

중국어 간체는 cp936, 중국어 번체는 CP950, 일본어는 CP932 등으로 수정할 수 있습니다.

$data->read('3.xls')를 자신만의 Excel 파일 이름으로 수정하세요.

위 내용은 관련 내용을 포함하여 EXCEL을 PHP로 읽는 방법을 소개하고 있으니, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

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