티스토리 뷰
직접 엑셀파일을 읽어오는 코드를 작성 해 보자.
방법은 크게 3가지 정도가 있고 여기서는 4분류로 나누어서 어떤 메서드로 어떻게 참조하여 가져오는지 보여준다.
일단 라이브러리를 다운받고 (버전 : PHPExcel_1.8.0 )
예제1)
<?php header("Content-Type:text/html; charset=utf-8"); header("Content-Encoding:utf-8"); error_reporting(E_ALL); set_time_limit(0); set_include_path(get_include_path() . PATH_SEPARATOR . './phpexcel/Classes/'); include_once 'PHPExcel.php'; include_once 'PHPExcel/IOFactory.php'; $objPHPExcel = new PHPExcel(); $fileName = './doc.xls'; echo "<!DOCTYPE html> <html> <head> <meta charset='utf-8'> </head> <body>"; try{ // 업로드 된 엑셀 형식에 맞는 Reader객체를 만든다. $objReader = PHPExcel_IOFactory::createReaderForFile($fileName); // 읽기전용으로 설정 $objReader->setReadDataOnly(true); // 엑셀파일을 읽는다 $objExcel = $objReader->load($fileName); // 첫번째 시트를 선택 $objExcel->setActiveSheetIndex(0); // 선택된 시트 가져오기 $objWorksheet = $objExcel->getActiveSheet(); /****************************************************************************** * 1.Iteraor를 사용하여 foreach ******************************************************************************/ echo '<table border=1 cellspacing=5px cellpadding=5px;>'; //모든 열 $rowIterator = $objWorksheet->getRowIterator(); foreach ($rowIterator as $row) { echo '<tr>'; //모든 열의 모든 행 $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); foreach ($cellIterator as $cell) { echo '<td>'. $cell->getValue(). '</td>'; } echo '</tr>'; } echo '</table><br /><br />'; /****************************************************************************** * 2.워크시트에서 가장 높은 행과 열 번호를 얻어서 참조 ******************************************************************************/ $highestRow = $objWorksheet->getHighestRow(); // 열의 참조 : 4 $highestColumn = $objWorksheet->getHighestColumn(); // 행의 참조 : F $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); // 알파벳 : F를 6 echo '<table border=1>'; for($row = 1; $row <= $highestRow; ++$row){ echo '<tr>'; for($col = 0; $col < $highestColumnIndex; ++$col){ echo '<td>' . $objWorksheet->getCellByColumnAndRow($col, $row)->getValue() . '</td>'; } echo '</tr>'; } echo '</table> <br /><br />'; /****************************************************************************** * 3.getCell('Alphabet', int)을 이용한 특정 행의 반복 출력 ******************************************************************************/ echo "<table border=1 cellspacing=5px cellpadding=5px;>"; $highestRow = $objWorksheet->getHighestRow(); for ($i = 2; $i < $highestRow; ++$i){ //두번째 행 부터 읽는다. echo "<tr>"; $a = $objWorksheet->getCell('A' . $i)->getValue(); $b = $objWorksheet->getCell('B' . $i)->getValue(); $c = $objWorksheet->getCell('C' . $i)->getValue(); echo "<td>".$a."</td>"; echo "<td>".$b."</td>"; echo "<td>".$c."</td>"; echo "</tr>"; } echo "</table><br /><br />"; /****************************************************************************** * 4.getCell('Alphabet', int)을 이용한 특정 행의 출력 ******************************************************************************/ $a = $objWorksheet->getCell('A' . 4)->getValue(); $b = $objWorksheet->getCell('B' . 4)->getValue(); $c = $objWorksheet->getCell('C' . 4)->getValue(); echo $a .', '; echo $b .', '; echo $c; }catch(exception $e){ echo '엑셀파일을 읽는도중 오류가 발생하였습니다.'; } echo "</body> </html>"; ?>
예제2)
<?php header("Content-Type:texthtml; charset=utf-8"); header("Content-Encoding:utf-8"); include_once './phpexcel/Classes/PHPExcel.php'; include_once './phpexcel/Classes/PHPExcel/IOFactory.php'; function array_iconv( $Current, $Next, $Array , $AutoDetect = true ) { $new_array = array(); $Current = strtoupper($Current); $Next = strtoupper($Next); $encode = array($Current,str_replace('//IGNORE','',$Next)); foreach($Array as $key => $val) { if(is_string($key) && (($AutoDetect == true && mb_detect_encoding($key,$encode) == $Current) || $AutoDetect == false)) { $key = iconv($Current, $Next, $key); } if(is_string($val) && (($AutoDetect == true && mb_detect_encoding($val,$encode) == $Current) || $AutoDetect == false)) { $val = iconv($Current, $Next, $val); } if(is_array($val)) { $val = array_iconv( $Current, $Next, $val, $AutoDetect); } $new_array[$key] = $val; } return $new_array; } $fileName = './doc.xls'; $objReader = PHPExcel_IOFactory::createReaderForFile($fileName); $objReader->setReadDataOnly(true); $objExcel = $objReader->load($fileName); $objExcel->setActiveSheetIndex(0); $objWorksheet = $objExcel->getActiveSheet()->toArray(null,true,true,true); echo var_dump(array_iconv("UTF-8","EUC-KR",$objWorksheet,true)); ?>
'■ 백엔드 ■ > PHP' 카테고리의 다른 글
직접 실습 하기 : 03.셀 데이터 삭제 (0) | 2014.04.17 |
---|---|
직접실습하기 : 02.쓰기 (다시 수정한 뒤 저장하기) (0) | 2014.04.17 |
Developer Documentation : 11.부록 (0) | 2014.04.17 |
Developer Documentation : 10.읽기 쓰기 (준비중) (0) | 2014.04.17 |
Developer Documentation : 09.계산 엔진 (0) | 2014.04.17 |
댓글