관리 메뉴

웹개발자의 기지개

PHPExcel 엑셀파일 읽기 본문

PHP

PHPExcel 엑셀파일 읽기

http://portfolio.wonpaper.net 2019. 2. 23. 09:26

엑셀형식의 데이터 파일을 DB에 일괄적으로 넣어야 할 작업이 자주 생긴다.

 

구글링과 나름 검색하여 정리해 봤다.

 

PHPExcel 이라고 괜찮은 툴이다.

 

https://github.com/PHPOffice/PHPExcel  에서 관련 예제 파일과 클래스파일들을 다운받아 보자.

 

중요한 파일들은 아래의 이미지상의 파일들이다.

 

 

 

 

 

<?
include "디비 환경설정파일";  // 개발환경마다 다른 DB연동 파일


require_once "../PHPExcel/Classes/PHPExcel.php";
$objPHPExcel = new PHPExcel();

require_once "../PHPExcel/Classes/PHPExcel/IOFactory.php";

 

$filename = 엑셀데이터파일.xls'; // 엑셀 파일의 경로와 파일명


// PHPExcel은 메모리를 사용하므로 메모리 최대치를 늘려준다.

// 이부분은 엑셀파일이 클때는 적절히 더욱 늘려줘야 제대로 읽어올수 있다.
ini_set('memory_limit', '1024M');

 

try {

 

    // 업로드 된 엑셀 형식에 맞는 Reader객체를 만든다.

    $objReader = PHPExcel_IOFactory::createReaderForFile($filename);

 

    // 읽기전용으로 설정

    $objReader->setReadDataOnly(true);

 

    // 엑셀파일을 읽는다

    $objExcel = $objReader->load($filename);

 

    // 첫번째 시트를 선택

    $objExcel->setActiveSheetIndex(0);

 

    $objWorksheet = $objExcel->getActiveSheet();

    $rowIterator = $objWorksheet->getRowIterator();

 

    foreach ($rowIterator as $row) {

               $cellIterator = $row->getCellIterator();

               $cellIterator->setIterateOnlyExistingCells(false);

    }

 

    $maxRow = $objWorksheet->getHighestRow();

 

    // echo $maxRow . "<br>";

 

    for ($i = 0 ; $i <= $maxRow ; $i++) {


               $a = $objWorksheet->getCell('A' . $i)->getValue(); // A열

               $b = $objWorksheet->getCell('B' . $i)->getValue(); // B열 
 
               $c = $objWorksheet->getCell('C' . $i)->getValue(); // C열 

               $d = $objWorksheet->getCell('D' . $i)->getValue(); // D열

               $e = $objWorksheet->getCell('E' . $i)->getValue();  // E열 

 

               $f = $objWorksheet->getCell('F' . $i)->getValue(); // F열

               $g = $objWorksheet->getCell('G' . $i)->getValue(); // G열 

 

               $h = $objWorksheet->getCell('H' . $i)->getValue(); // H열 

               // 날짜 형태의 셀을 읽을때는 toFormattedString를 사용한다.

               $h = PHPExcel_Style_NumberFormat::toFormattedString($h, 'YYYY-MM-DD');

 

      //   echo $a . " / " . $b. " / " . $c . " / " . $d . " / " . $e . " / " . $f . " / " . $g . " <br>\n";

    
             $b  = addslashes($b);
             $c  = addslashes($c);
             $d  = addslashes($d);
             $e  = addslashes($e);
             $f  = addslashes($f);
             $g  = addslashes($g);

 

          $query = "insert into 삽입할 테이블 (continent,country_code,country,city_code,city,use_yn) values ('$b','$c','$d','$e','$f','$g')";
          mysql_query($query) or die("Insert Error !");


      }
 
   echo $maxRow-1 . " Data inserting finished !";

 

} catch (exception $e) {
    echo '엑셀파일을 읽는도중 오류가 발생하였습니다.!';
}

?>

 

 

 

참고 정리 : http://blog.naver.com/PostView.nhn?blogId=dme1004&logNo=220682251593 

 

위의 포스팅  글을 실제 제소스에 맞추어 참고 정리하였다.

Comments