Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHPExcel로 Excel 파일을 열어 읽고 쓰는 방법

PHPExcel에는 파일을 '읽기/쓰기용으로 열기'라는 별도의 개념이 존재하지 않습니다. PHPExcel 객체 자체가 파일의 출처를 인식하지 못하기 때문입니다. 파일이 어디에서 로드되었든, 어떤 형식의 파일이든 상관없이 PHPExcel은 해당 파일을 읽은 후 동일한 이름으로 다시 저장할 수 있습니다. 이렇게 하면 기존 파일이 덮어써지며, 변경된 내용이 그대로 파일에 반영됩니다.

예제 코드

error_reporting(E_ALL);
set_time_limit(0);
date_default_timezone_set('Europe/London');
set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/');
include 'PHPExcel/IOFactory.php';

$fileType = 'Excel5';
$fileName = 'name_of_file.xls';

// 파일 읽기
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objPHPExcel = $objReader->load($fileName);

// 파일 내용 수정
$objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A1', 'Hello')
    ->setCellValue('B1', 'World!');

// 파일 쓰기(저장)
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
$objWriter->save($fileName);

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

A1, B1 셀의 변경 사항이 name_of_file.xls 파일에 그대로 반영됩니다.

코드 설명

먼저 set_time_limit(0)을 통해 스크립트 실행 시간 제한을 해제하고, date_default_timezone_set() 함수로 타임존을 'Europe/London'으로 설정합니다. 파일 형식은 Excel5(.xls)로 지정되며, 파일명은 변수 $fileName에 할당됩니다.

이후 PHPExcel_IOFactory 클래스의 createReader() 메서드를 사용해 리더 객체를 생성하고, load() 함수를 호출하여 실제 파일을 로드합니다. 로드된 시트에서 A1과 B1 두 셀의 값을 변경한 뒤, createWriter()로 생성한 라이터 객체의 save() 메서드를 통해 동일한 파일명으로 저장합니다.

이 과정을 통해 원본 파일이 새로운 값으로 덮어써지며, 별도의 읽기 전용·쓰기 전용 모드 설정 없이 간편하게 파일을 수정할 수 있습니다.