-PHPExcel

PHP 엑셀 업로드 및 다운로드에 필요한 라이브러리

다운로드 주소 : https://github.com/PHPOffice/PHPExcel

 

GitHub - PHPOffice/PHPExcel: ARCHIVED

ARCHIVED. Contribute to PHPOffice/PHPExcel development by creating an account on GitHub.

github.com

 

HTML

<div id="uploadModal">
	<button id="closeBtn" onclick="closeUploadModal()">닫기</button>
    <h2>엑셀 업로드</h2>
    <form id="uploadForm" enctype="multipart/form-data" action="excel_read.php" method="post">
    	<input type="file" name="excelFile" accept=".xls, .xlsx" required>
        <br><br>
        <input type="submit" value="업로드">
    </form>
 </div>
 
 <script type="text/javascript">
    function openUploadModal() {
        document.getElementById('uploadModal').style.display = 'block';
    }

    function closeUploadModal() {
        document.getElementById('uploadModal').style.display = 'none';
    }
 </script>

 

PHP

require_once "../common/PHPExcel-1.8/Classes/PHPExcel.php";
require_once "../common/PHPExcel-1.8/Classes/PHPExcel/IOFactory.php";

if (!$_FILES['excelFile']['name']) {
    echo "<script>alert('엑셀파일을 확인해주세요.')</script>";
    exit;
}

$objPHPExcel = new PHPExcel();
try {
    // 업로드한 PHP 파일을 읽어온다.
    $objPHPExcel = PHPExcel_IOFactory::load($_FILES['excelFile']['tmp_name']);
    $objPHPExcel -> setActiveSheetIndex(0);//첫번째 시트를 선택
    $sheet = $objPHPExcel->getActiveSheet();
    $rows = $sheet->getRowIterator();
    foreach ($rows as $row) { // 모든 행에 대해서
        $cellIterator = $row->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(false);
    }
    $maxRow = $sheet->getHighestRow();
    for ($i = 0 ; $i <= $maxRow ; $i++) {
        $A = $sheet->getCell('A' . $i)->getValue(); // A열
        $B = $sheet->getCell('B' . $i)->getValue(); // B열
        $C = $sheet->getCell('C' . $i)->getValue(); // C열
        $D = $sheet->getCell('D' . $i)->getValue(); // D열
        $F = $sheet->getCell('E' . $i)->getValue(); // E열
        $G = $sheet->getCell('F' . $i)->getValue(); // F열
        $H = $sheet->getCell('H' . $i)->getValue(); // H열
        $I = $sheet->getCell('I' . $i)->getValue(); // I열
    }
}catch(exception $e) {
    echo $e;
}

 

만약 시트가 여러개인 경우 아래 코드 참고.

$sheetsCount = $objPHPExcel -> getSheetCount();
// 시트Sheet별로 읽기
for($i = 0; $i < $sheetsCount; $i++) {
    $objPHPExcel -> setActiveSheetIndex($i);
    $sheet = $objPHPExcel -> getActiveSheet();
    $highestRow = $sheet -> getHighestRow();   		// 마지막 행
    $highestColumn = $sheet -> getHighestColumn();	// 마지막 컬럼

    // 한줄읽기
    for($row = $start_row; $row <= $highestRow+$start_row-1; $row++) {
        // $rowData가 한줄의 데이터를 셀별로 배열처리 된다.
        $rowData = $sheet -> rangeToArray("A" . $row . ":" . $highestColumn . $row, NULL, TRUE, FALSE);

        // $rowData에 들어가는 값은 계속 초기화 되기때문에 값을 담을 새로운 배열을 선안하고 담는다.
        $allData[$row] = $rowData[0];
    }
}

 

'프로그래밍 > PHP' 카테고리의 다른 글

[PHP] 파일 다운로드 오류  (0) 2024.04.03
[PHP] 달력 만들기  (0) 2024.02.16

+ Recent posts