Files
sam-kd/order/make_excel.php
hskwon aca1767eb9 초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
2025-12-10 20:14:31 +09:00

174 lines
7.2 KiB
PHP

<?php
session_start();
?>
<!DOCTYPE HTML>
<?php
function db_connect(){ //DB연결을 함수로 정의
$db_user ="chandj"; //추가한 계정이름(사용자명)
$db_pass ="km5130!!"; //비밀번호
$db_host ="5130.co.kr";
$db_name ="chandj";
$db_type ="mysql";
$dsn ="$db_type:host=$db_host;db_name=$db_name;charset=utf8";
try{
$pdo=new PDO($dsn,$db_user,$db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,FALSE);
//print "데이터베이스에 접속하였습니다.<br>"; 접속할 때마다 프린트 할 이유 없기 때문에 주석처리
} catch (PDOException $Exception) {
die('오류:'.$Exception->getMessage());
}
return $pdo;
}
$pdo = db_connect();
require_once "../PHPExcel_1.8.0/Classes/PHPExcel.php"; // PHPExcel.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.
$objPHPExcel = new PHPExcel();
require_once "../PHPExcel_1.8.0/Classes/PHPExcel/IOFactory.php"; // IOFactory.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.
$filename = './testB.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 = 1 ; $i <= $maxRow ; $i++) { // 2번째 줄부터 읽기 $i=1
$add1 = $objWorksheet->getCell('A' . $i)->getValue(); // A열
$add2 = $objWorksheet->getCell('B' . $i)->getValue(); // B열
$add3 = $objWorksheet->getCell('C' . $i)->getValue(); // C열
$add4 = $objWorksheet->getCell('D' . $i)->getValue(); // D열
$add5 = $objWorksheet->getCell('E' . $i)->getValue(); // E열
$add6 = $objWorksheet->getCell('F' . $i)->getValue(); // F열
$add7 = $objWorksheet->getCell('G' . $i)->getValue(); // G열
$add8 = $objWorksheet->getCell('H' . $i)->getValue(); // H열
$add9 = $objWorksheet->getCell('I' . $i)->getValue(); // I열
$add10= $objWorksheet->getCell('J' . $i)->getValue(); // J열
$add11= $objWorksheet->getCell('K' . $i)->getValue(); // K열
$add12= $objWorksheet->getCell('L' . $i)->getValue(); // L열
$add13= $objWorksheet->getCell('M' . $i)->getValue(); // M열
$add14= $objWorksheet->getCell('N' . $i)->getValue(); // N열
$add15= $objWorksheet->getCell('O' . $i)->getValue(); // O열
$add15 = PHPExcel_Style_NumberFormat::toFormattedString($add15, 'YYYY-MM-DD');
$add16= $objWorksheet->getCell('P' . $i)->getValue(); // P열
$add16 = PHPExcel_Style_NumberFormat::toFormattedString($add16, 'YYYY-MM-DD');
$add17= $objWorksheet->getCell('Q' . $i)->getValue(); // Q열
$add18= $objWorksheet->getCell('R' . $i)->getValue(); // R열
$add19= $objWorksheet->getCell('S' . $i)->getValue(); // S열
$add19 = PHPExcel_Style_NumberFormat::toFormattedString($add19, 'YYYY-MM-DD');
$add20= $objWorksheet->getCell('T' . $i)->getValue(); // T열
$add20 = PHPExcel_Style_NumberFormat::toFormattedString($add20, 'YYYY-MM-DD');
$add21= $objWorksheet->getCell('U' . $i)->getValue(); // U열
$add22= $objWorksheet->getCell('V' . $i)->getValue(); // V열
$add22 = PHPExcel_Style_NumberFormat::toFormattedString($add22, 'YYYY-MM-DD');
$add23= $objWorksheet->getCell('W' . $i)->getValue(); // W열
$add24= $objWorksheet->getCell('X' . $i)->getValue(); // X열
$add24 = PHPExcel_Style_NumberFormat::toFormattedString($add24, 'YYYY-MM-DD');
$add25= $objWorksheet->getCell('Y' . $i)->getValue(); // Y열
$add26= $objWorksheet->getCell('Z' . $i)->getValue(); // Z열
$add26 = PHPExcel_Style_NumberFormat::toFormattedString($add26, 'YYYY-MM-DD');
/* $reg_date = PHPExcel_Style_NumberFormat::toFormattedString($reg_date, 'YYYY-MM-DD'); // 날짜 형태의 셀을 읽을때는 toFormattedString를 사용한다. */
try{
$pdo->beginTransaction();
$sql = "insert into chandj.work(chargedperson, workplacename, address, worklist, motormaker, power, "; //6
$sql .= "firstord, secondord, firstordman, secondordman, firstordmantel,secondordmantel, comment, subject,"; //8
$sql .= "workday,cableday, worker, cablestaff, endworkday, endcableday, estimate1, billdate1 ,bill1, billdate2 ,bill2,billdate3) "; //12
$sql .= "values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,";// 총 12개 레코드 추가
$sql .= "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,";
$sql .= "?, ?)"; // 총 26개 레코드 추가 위의 Set과 숫자가 딱 맞아야만 입력이 실행된다.
$stmh = $pdo->prepare($sql);
$stmh->bindValue(1, $add1, PDO::PARAM_STR);
$stmh->bindValue(2, $add2, PDO::PARAM_STR);
$stmh->bindValue(3, $add3, PDO::PARAM_STR);
$stmh->bindValue(4, $add4, PDO::PARAM_STR);
$stmh->bindValue(5, $add5, PDO::PARAM_STR);
$stmh->bindValue(6, $add6, PDO::PARAM_STR);
$stmh->bindValue(7, $add7, PDO::PARAM_STR);
$stmh->bindValue(8, $add8, PDO::PARAM_STR);
$stmh->bindValue(9, $add9, PDO::PARAM_STR);
$stmh->bindValue(10, $add10, PDO::PARAM_STR);
$stmh->bindValue(11, $add11, PDO::PARAM_STR);
$stmh->bindValue(12, $add12, PDO::PARAM_STR);
$stmh->bindValue(13, $add13, PDO::PARAM_STR);
$stmh->bindValue(14, $add14, PDO::PARAM_STR);
$stmh->bindValue(15, $add15, PDO::PARAM_STR);
$stmh->bindValue(16, $add16, PDO::PARAM_STR);
$stmh->bindValue(17, $add17, PDO::PARAM_STR);
$stmh->bindValue(18, $add18, PDO::PARAM_STR);
$stmh->bindValue(19, $add19, PDO::PARAM_STR);
$stmh->bindValue(20, $add20, PDO::PARAM_STR);
$stmh->bindValue(21, $add21, PDO::PARAM_STR);
$stmh->bindValue(22, $add22, PDO::PARAM_STR);
$stmh->bindValue(23, $add23, PDO::PARAM_STR);
$stmh->bindValue(24, $add24, PDO::PARAM_STR);
$stmh->bindValue(25, $add25, PDO::PARAM_STR);
$stmh->bindValue(26, $add26, PDO::PARAM_STR);
$stmh->execute();
$pdo->commit();
} catch (PDOException $Exception) {
$pdo->rollBack();
print "오류: ".$Exception->getMessage();
}
}
}
catch (exception $e) {
echo '엑셀파일을 읽는도중 오류가 발생하였습니다.';
}
?>