최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

■ 백엔드 ■/PHP

PHPExcel ?

serpiko 2014. 4. 7. 20:36

   PHPExcel


1.글쓰기전에...


너무 바쁘고 + 정신없고 + 배우고 + 가르치고 + 만나고 + 운동하느라...(2014年 03~ 04月)


블로그 포스팅들이 세부적인 내용과 충분한 예제를 갖추어 탄탄한 글이 되지 못한 채 방치되어 상당히 쌓여가고 있는데


주말에 시간이 나는대로 틈틈히 복습겸 정리해 두겠다.



2.프레임웍의 사용.


일단 현재 진행하고 있는 프로젝트에서 가장 큰 이슈는 웹과 엑셀의 연동이다.


언어는 정해진게 없으니 당연히 php로 진행할 것이고 엑셀에 엑세스를 도와줄 프레임웍은 PHPExcel 로 정했다.


엑셀에서 값을 읽어오거나 내보내기에는 간단하게 쓰일 수 있겠지만 계속해서 읽기와 쓰기 그리고 덮어쓰기 저장을 해야하기 때문에


관련 샘플코드나 API를 상세하게 분석하려 한다.


이 글을 쓰는 시점에서 성공한 테스트는 읽기, 쓰기, 저장, 내보내기 기능이다. 


다른 고급 기능들도 상당히 많았는데 대략 소개하자면 엑셀의 필터기능, 엑셀의 DATE TIME기능, LOOKUP, MATH 등 


엑셀시트의 정렬과 스타일 이미지까지 반영할 수 있다.



3.프레임웍의 간단한 설명



영어원문)

Project providing a set of classes for the PHP programming language, which allow you to write to and read from different spreadsheet file formats, like Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML, ... This project is built around Microsoft's OpenXML standard and PHP.
Checkout the Features this class set provides, such as setting spreadsheet meta data (author, title, description, ...), multiple worksheets, different fonts and font styles, cell borders, fills, gradients, adding images to your spreadsheet, calculating formulas, converting between file types and much, much more!


"이 PHPExcel은 php로 스프레드 시트 포맷을 가진 파일들을 읽고 쓸수 있는 클래스 세트를 제공한다.


xls, xlsx, CSV, Libre/OpenOffice Calc, ods, Gnumeric, PDF, HTML...등을 읽을 수 있으며


이 프레임워크는 마이크로 소프트의 OpenXML을 내장하고 있다."



   읽기 / 쓰기 지원목록


읽기


BIFF 5-8 (.xls) Excel 95 and above

Office Open XML (.xlsx) Excel 2007 and above

SpreadsheetML (.xml) Excel 2003

Open Document Format/OASIS (.ods)

Gnumeric

HTML

SYLK

CSV



쓰기


BIFF 8 (.xls) Excel 95 and above

Office Open XML (.xlsx) Excel 2007 and above

HTML

CSV

PDF (using either the tcPDF, DomPDF or mPDF libraries, which need to be installed separately)






   요구사항


php버전 5.2.0 이상


php의 php_zip 활성화 

(.xlsx .ods .gnumeric files 의 파일을 관리할때 : required if you need PHPExcel to handle .xlsx .ods or .gnumeric files)


php_xml 활성화


php_gd2 활성화 

(일종의 옵션이지만 열과 행에 대한 자동계산에 필요할 수 있다. : optional, but required for exact column width autocalculation)



   라이센스


LGPL (GNU LESSER GENERAL PUBLIC LICENSE)




   다운로드


https://github.com/PHPOffice/PHPExcel/archive/develop.zip



   Hello World example


아래 코드의 php를 실행하면 php파일이 내용이 채워진 엑셀파일로 변경된다.


<?php
/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();

// Set properties
echo date('H:i:s') . " Set properties\n";
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");


// Add some data
echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');

// Rename sheet
echo date('H:i:s') . " Rename sheet\n";
$objPHPExcel->getActiveSheet()->setTitle('Simple');

		
// Save Excel 2007 file
echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));

// Echo done
echo date('H:i:s') . " Done writing file.\r\n";



   API


https://github.com/PHPOffice/PHPExcel/wiki/User%20Documentation

댓글