본문 바로가기
Develop/PHP

코드이그나이터PHPExcel 사용하는 방법

by bellsilver7 2020. 2. 28.
728x90

안녕하세요. 은은한 개발자입니다.

1. PHPExcel 다운로드

 

PHPOffice/PHPExcel

ARCHIVED. Contribute to PHPOffice/PHPExcel development by creating an account on GitHub.

github.com

먼저 위 github 링크로 들어가 압축파일(.zip) 을 다운받습니다.

 

 

2. third_party 폴더에 라이브러리 등록

다운받은 압축 파일을 열어 Classes 파일 안의 디렉토리와 파일을 위와 같이 application/third_party 폴더에 복사합니다.

 

 

3. Excel 클래스 생성

그리고 application/libraries 디렉토리에 Excel.class.php 라는 파일명의 클래스를 생성하고 아래의 내용을 넣습니다.

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

require_once APPPATH . "/third_party/PHPExcel.php";

class Excel extends PHPExcel
{
    public function __construct()
    {
        parent::__construct();
    }
}

그러면 이제 설치는 완료 됬고 간단한 예제를 실행 해보겠습니다.

 

4. 예제

/**
 * 엑셀 쓰기
 */
public function excel_write()
{
    // PHPExcel 라이브러리 로드
    $this->load->library('excel');

    // 워크시트 1번째는 활성화
    $this->excel->setActiveSheetIndex(0);

    // 워크시트 이름 지정
    $this->excel->getActiveSheet()->setTitle('example');

    // A1의 내용을 입력
    $this->excel->getActiveSheet()->setCellValue('A1', '여기에 텍스트 입력');

    // A1의 폰트를 변경
    $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20);

    // A1의 글씨를 볼드로 변경
    $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);

    // A1부터 D1까지 셀 병합
    $this->excel->getActiveSheet()->mergeCells('A1:D1');

    // A1의 컬럼 가운데 정렬
    $this->excel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $filename = 'example.xlsx'; // 엑셀 파일명
    header('Content-Type: application/vnd.ms-excel; charset=utf-8;');
    header('Content-Disposition: attachment;filename="' . $filename . '"'); // 브라우저에서 받을 파일명
    header('Cache-Control: max-age=0'); // no cache

	// Excel2007 포맷으로 저장
    $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel2007');

    // 서버에 파일을 쓰지 않고 바로 다운로드
    $objWriter->save('php://output');
}

 

/**
 * 엑셀 읽기
 */
public function excel_read()
{
    // PHPExcel 라이브러리 로드
    $this->load->library('excel');

    // 엑셀 파일 읽기
    $objPHPExcel = PHPExcel_IOFactory::load(APPPATH . 'upload/example.xlsx');

    // 엑셀 내용을 배열로 변환
    $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);

    echo "<xmp>";
    var_dump($sheetData);
    echo "</xmp>";
}

APPPATH 및에 upload 경로를 만들고 다운받은 example.xlsx 파일을 넣어 엑셀 읽기를 실행합니다.

 

여기까지 코드이그나이터에서 엑셀 라이브러리(PHPExcel) 을 사용하는 방법에 대해 간단한 예제를 포함해서 알아봤습니다. 필자의 경우 라이브러리를 사용하면서 편리함도 있었지만 엑셀로 만들어야 할 데이터의 양이 많아 질수록 속도 효율이 좋지 않음을 경험하기도 했습니다. 따라서 때에 맞게 잘 사용하시면 좋을 것 같습니다.

 

다음에는 라이브러리를 사용하지 않고 다운받는 방법과 CSV 다운로드에 대해서도 포스팅 해보도록 하겠습니다.

728x90

댓글