엄지월드

php excel 파일 읽는 방법 본문

PHP

php excel 파일 읽는 방법

킨글 2018. 7. 22. 17:24
반응형

PHPExcel 라이브러리 다운 : 먼저 PHPExcel 클래스를 다운로드 받자

http://www.codeplex.com/PHPExcel 에 방문하여 최신 버전을 내려받는다.

 

 

1. 폼 없이 읽기

<?php

require_once "./PHPExcel-1.8/Classes/PHPExcel.php"; // PHPExcel.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.
$objPHPExcel = new PHPExcel();
require_once "./PHPExcel-1.8/Classes/PHPExcel/IOFactory.php"; // IOFactory.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.
$filename = './testA.xlsx'; // 읽어들일 엑셀 파일의 경로와 파일명을 지정한다.

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();

    for ($i = 0 ; $i <= $maxRow ; $i++) {
    	$name = $objWorksheet->getCell('A' . $i)->getValue(); // A열
        $addr1 = $objWorksheet->getCell('B' . $i)->getValue(); // B열
        $addr2 = $objWorksheet->getCell('C' . $i)->getValue(); // C열
        $addr3 = $objWorksheet->getCell('D' . $i)->getValue(); // D열
        $addr4 = $objWorksheet->getCell('E' . $i)->getValue(); // E열
        $reg_date = $objWorksheet->getCell('F' . $i)->getValue(); // F열
        $reg_date = PHPExcel_Style_NumberFormat::toFormattedString($reg_date, 'YYYY-MM-DD'); // 날짜 형태의 셀을 읽을때는 toFormattedString를 사용한다.
		echo $name.'<br/>'; // 제대로 읽어와지나 테스트
    }
} 
catch (exception $e) {
    echo '엑셀파일을 읽는도중 오류가 발생하였습니다.';
}

?>

2. 폼 있는 상태에서 전송

<?php

require_once "./PHPExcel-1.8/Classes/PHPExcel.php"; // PHPExcel.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.
$objPHPExcel = new PHPExcel();
require_once "./PHPExcel-1.8/Classes/PHPExcel/IOFactory.php"; // IOFactory.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.
$uploaddir = '/var/www/temp/';  // 업로드 할 위치 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
echo 'output:'.basename($_FILES['userfile']['tmp_name']);

if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  echo '<br>good file<br>';
}else{
  print '<br>avoid attack!<br>';
}

echo 'detail debug :';
print_r($_FILES);
print "</pre>";

// $filename = './testA.xlsx'; // 읽어들일 엑셀 파일의 경로와 파일명을 지정한다.
$filename = $_FILES['userfile']['tmp_name']; // 읽어들일 엑셀 파일의 경로와 파일명을 지정한다.

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();

    for ($i = 0 ; $i <= $maxRow ; $i++) {
    	$name = $objWorksheet->getCell('A' . $i)->getValue(); // A열
        $addr1 = $objWorksheet->getCell('B' . $i)->getValue(); // B열
        $addr2 = $objWorksheet->getCell('C' . $i)->getValue(); // C열
        $addr3 = $objWorksheet->getCell('D' . $i)->getValue(); // D열
        $addr4 = $objWorksheet->getCell('E' . $i)->getValue(); // E열
        $reg_date = $objWorksheet->getCell('F' . $i)->getValue(); // F열
        $reg_date = PHPExcel_Style_NumberFormat::toFormattedString($reg_date, 'YYYY-MM-DD'); // 날짜 형태의 셀을 읽을때는 toFormattedString를 사용한다.

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

?>

 

 

도움이 되셨다면 광고 한번씩 클릭 부탁드립니다 😁

'PHP' 카테고리의 다른 글

php 검색 시 키워드 하이라이트 처리하기  (0) 2018.07.24
PHP DB 한글 깨짐 현상  (0) 2018.07.23
php Permission denied  (2) 2018.07.22
php 검색 구현  (0) 2018.07.22
php ajax 데이터 전송하기  (0) 2018.07.22
Comments