PHPExcel 사용하기 (2)

 

PHPExcel를 사용해서 내용을 간단하게 입력해보고 다운로드 받을 수 있도록 테스트해볼 예정입니다.

 

1. 환경 설정

 

리눅스에서 Apache, PHP 가 설치되어 있어야합니다.

Ubuntu 에서는 apt-get 으로 apache2 와 php5 를 설치하면 됩니다.

 

윈도우에서는 apmsetup 을 설치하시면 간단합니다.

APMSETUP 홈페이지 주소는 아래와 같습니다.

 

홈페이지 주소 : http://www.apmsetup.com

 

리눅스 apache2 의 경우, 기본 홈 디렉토리가 /var/www/ 이며

윈도우에서 apmsetup 을 설치했을 경우, 기본 홈 디렉토리가 C:\APM_Setup\htdocs 입니다.

 

강좌는 윈도우에서 php_sample.php 라는 파일을 만들고 진행하였습니다.

 

 

2. 샘플 파일

 

PHPExcel 사이트에 받은 PHPExcel_1.7.8-with_documentation-msoffice_format.zip 파일의 압축을 풀고 html 기본 홈 디렉토리에 넣어줍니다.

 

윈도우에서 진행했으니, C:\APM_Setup\htdocs 안에 PHPExcel 폴더를 복사해줍니다.

 

아래는 미리 만들어진 기본 소스 입니다.

 

<?php
    require_once 'PHPExcel/Classes/PHPExcel.php';
    $objPHPExcel = new PHPExcel();
 
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename=sample.xls');
    header('Cache-Control: max-age=0');
 
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
 
    exit;
?>

 

require_once : PHPExcel 관련 PHP 파일을 포함시켜줘야합니다. PHPExcel 안에 Classes/PHPExcel.php 파일의 경로를 적어줍니다.

 

그 다음 header 에는 PHPExcel의 샘플 내용대로 엑셀 파일을 다운로드 받을 수 있도록 파일명을 정해줍니다.

 

위의 내용대로 만든 다음, 웹 브라우저에서 주소를 입력해서 테스트를 해보도록 합니다.

 

주소를 입력하면 아래 그림과 같이 sample.xls 파일을 다운로드 됩니다.

 

 

 

3. 기본 설정 추가

 

엑셀 파일이 다운로드 되는 것을 확인했으니, 이제 엑셀 파일의 내용을 넣어줄 차례입니다.

 

PHPExcel을 새로 만들어준다음,

 

$objPHPExcel = new PHPExcel();

 

사용이 가능하도록 시트를 설정해줍니다.

 

$sheet      = $objPHPExcel->getActiveSheet();

 

엑셀의 기본 글꼴을 정해주지 않으면, 영문쪽 글꼴로 선택됩니다. 윈도우 기본 폰트인 '맑은 고딕' 으로 설정해주기 위해서 아래와 같이 설정해 줍니다.

 

$sheet->getDefaultStyle()->getFont()->setName('맑은 고딕');

 

폰트 크기를 정하고 싶다면 뒤에 ->setSize를 넣어주면 됩니다.

 

$sheet->getDefaultStyle()->getFont()->setName('맑은 고딕')->setSize(10);

 

 

4. 내용 추가

 

간단하게 아래와 같이 내용을 추가해주기 위해서 PHP 소스를 추가하도록 하겠습니다.

 

 

처음에는 사용하게 될 시트를 선택해줘야 합니다.

아래 명령처럼 제일 첫 번째 시트를 선택하도록 합니다.

 

$sheetIndex = $objPHPExcel->setActiveSheetIndex(0);

 

$sheetIndex 에 내용을 추가하면 됩니다.

위의 '제목' 처럼 입력하면 아래와 같이 적어줍니다.

 

A1 셀에 내용을 '제 목' 이라고 입력해줍니다.

 

$sheetIndex->setCellValue('A1','제 목');

 

A1 ~ D1 셀 내용을 합쳐줍니다.

 

$sheetIndex->mergeCells('A1:D1');

 

A1 셀의 폰트와 스타일을 정해줍니다. 폰트 크기는 20으로 하고 두껍게 표시하도록 하였습니다.

 

$sheetIndex->getStyle('A1')->getFont()->setSize(20)->setBold(true);

 

A1 셀 내용이 중앙 정렬되도록 아래와 같이 입력해줍니다.

 

$sheetIndex->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

 

위의 내용을 추가하고 웹 브라우저에서 주소를 입력하면 '제 목'을 볼 수 있습니다.

 

그 다음 내용을 추가해줄 차례입니다.

아래와 같이 셀주소와 내용을 입력해주면 됩니다.

 

$sheetIndex ->setCellValue('A2', '하나')
                ->setCellValue('B2', '둘')
                ->setCellValue('C2', '셋')
                ->setCellValue('D2', '넷');

 

위와 같이 작성한 후에 웹 브라우저에서 입력을 하면 아래 그림과 같은 화면을 볼 수 있습니다.

 

 

간단한 내용을 출력하는거지만, 생각외로 정해줄게 많은거 같습니다.

 

 

5. 전체 소스

 

<?php
    require_once 'PHPExcel/Classes/PHPExcel.php';
    $objPHPExcel = new PHPExcel();

    $sheet      = $objPHPExcel->getActiveSheet();

    // 글꼴
    $sheet->getDefaultStyle()->getFont()->setName('맑은 고딕');

    $sheetIndex = $objPHPExcel->setActiveSheetIndex(0);

    // 제목
    $sheetIndex->setCellValue('A1','제 목');
    $sheetIndex->mergeCells('A1:D1');
    $sheetIndex->getStyle('A1')->getFont()->setSize(20)->setBold(true);
    $sheetIndex->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    // 내용
    $sheetIndex ->setCellValue('A2', '하나')
                ->setCellValue('B2', '둘')
                ->setCellValue('C2', '셋')
                ->setCellValue('D2', '넷');

    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename=sample.xls');
    header('Cache-Control: max-age=0');
 
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
 
    exit;
?>

 

 

다음 주에는...

 

위와 같이 스타일을 매번 정해놓고 하기엔 번거로운 점이 많습니다.

그래서 미리 만들어진 양식을 불러다가 내용을 추가해보록 하겠습니다.