Codeigniter

Codeigniter 에서 phpSpreadsheet 사용하기 PHP8.2

은둔한량 2023. 9. 6. 16:26
반응형

php 7.x 버젼 부터 phpExcel 사용이 안된다길래 에러 잡다가 짜증이 나서 phpSpreadsheet로 갈아탔다 ㅎㅎ

phpSpreadsheet 는 Composer 로 설치를 해야한다. 아래 링크 참조

https://koreanred.tistory.com/141

 

PHP 8.2 phpExcel 대체 phpSpreadsheet 설치

PHP 8.2 에서 phpExcel을 사용하려고 했더니 {0} 를 [0] 로 바꾸고 해도 계속 에러와 경고가 떠서 phpExcel 대신 사용할 라이브러리를 찾던중 phpSpreadsheet가 있어서 사용하려고 한다. https://github.com/PHPOffice/

koreanred.tistory.com

 

설치된 phpSpreadsheet 이동 복사

C:\Users\아이디\vendor <== 이걸 통째로

자신의 DOCUMENT_ROOT  저는 htdocs 밑으로 통째로 복사합니다.

1. config.php 수정

$config['composer_autoload'] = 'vendor/autoload.php';

 

2. phpSpreadsheet  사용하기

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

이 두줄만 넣어주고 사용하면 된다.

defined('BASEPATH') OR exit('No direct script access allowed');
 
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 
class Welcome extends CI_Controller {
    
    // 엑셀 업로드
    public function excel_upload()
    {
        $fileName = $_FILES['fileName']['name'];
        $file_type= pathinfo($fileName, PATHINFO_EXTENSION);// 확장자

        if ($file_type =='xls') {
            $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();	
        }
        elseif ($file_type =='xlsx') {
            $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        }
        else {
            echo '처리할 수 있는 엑셀 파일이 아닙니다';
            exit;
        }
        
        $spreadsheet = $reader->load($upload_dir.$fileName);	
        $spreadData = $spreadsheet-> getActiveSheet()->toArray();
        
        print_r($spreadData); // 배열로 가져와서 처리해준다.

    }
    
    // 엑셀 다운로드
    public function download()
    {
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue('A1', 'Hello World !');
        
        $writer = new Xlsx($spreadsheet);
 
        $filename = 'sample';
 
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'. $filename .'.xlsx"'); 
        header('Cache-Control: max-age=0');
        
        $writer->save('php://output'); // download file 
 
    }
}

 

다운로드가 아주 잘 된다.

phpExcel과 설치법만 다를뿐 사용법은 거의 비슷한것 같습니다.

Codeigniter 에서 phpSpreadsheet 사용하기 PHP8.2

 

Codeigniter 에서 phpSpreadsheet 사용하기 PHP8.2

반응형