-PHPExcel
PHP 엑셀 업로드 및 다운로드에 필요한 라이브러리
다운로드 주소 : https://github.com/PHPOffice/PHPExcel
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 |