[PHP] PHPExcel 날짜 표시 형식 처리하기[PHP] PHPExcel 날짜 표시 형식 처리하기
Posted at 2020. 4. 26. 18:32 | Posted in PHP/PHP Library■ PHPExcel에서 날짜 표시 형식의 데이터 읽어오기
PHPExcle의 사용중 특정 열의 값이 날짜 형태로 지정된 경우
해당 데이터를 읽어 들이고 그 값을 출력해 보면
# 출력결과
위와 같이이 날짜 형식을 지정한 열의 값이
이상한 숫자형태의 값으로 출력되는 것을 확인 할 수 있다.
날짜 형식으로 지정된 값을 불러오기 위해서는,
가져온 데이터를 형식에 알맞게 포맷을 해주어야 하기 때문인데.
해당 방법은 아래와 같다.
# 소스코드
<?php include "./PHPExcel.php"; $objPHPExcel = new PHPExcel(); // 엑셀 데이터를 담을 배열을 선언한다. $xlsData = array(); // 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다. $filename = iconv("UTF-8", "EUC-KR", "date_format.xls"); try { // 업로드한 PHP 파일을 읽어온다. $objPHPExcel = PHPExcel_IOFactory::load($filename); $sheetsCount = $objPHPExcel -> getSheetCount(); // 시트Sheet별로 읽기 for($sheet = 0; $sheet < $sheetsCount; $sheet++) { $objPHPExcel -> setActiveSheetIndex($sheet); $activesheet = $objPHPExcel -> getActiveSheet(); $highestRow = $activesheet -> getHighestRow(); // 마지막 행 $highestColumn = $activesheet -> getHighestColumn(); // 마지막 컬럼 // 한줄읽기 for($row = 2; $row <= $highestRow; $row++) { // $rowData가 한줄의 데이터를 셀별로 배열처리 된다. $rowData = $activesheet -> rangeToArray("A" . $row . ":" . $highestColumn . $row, NULL, TRUE, FALSE); // $rowData에 들어가는 값은 계속 초기화 되기때문에 값을 담을 새로운 배열을 선안하고 담는다. $xlsData[$row] = $rowData[0][1]; } } } catch(exception $exception) { echo $exception; } $dateArray = array(); // 형식 : d/m/y h:mm $dateArray[0] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[2], PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME); // 형식 : dd/mm/yy $dateArray[1] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[3], PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY); // 형식 : d-m $dateArray[2] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[4], PHPExcel_Style_NumberFormat::FORMAT_DATE_DMMINUS); // 형식 : d-m-y $dateArray[3] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[5], PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYMINUS); // 형식 : d/m/y $dateArray[4] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[6], PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYSLASH); // 형식 : m-y $dateArray[5] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[7], PHPExcel_Style_NumberFormat::FORMAT_DATE_MYMINUS); // 형식 : h:mm AM/PM $dateArray[6] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[8], PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME1); // 형식 : h:mm:ss AM/PM $dateArray[7] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[9], PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME2); // 형식 : h:mm $dateArray[8] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[10], PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3); // 형식 : h:mm:ss $dateArray[9] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[11], PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); // 형식 : mm:ss $dateArray[10] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[12], PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME5); // 형식 : h:mm:ss $dateArray[11] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[13], PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME6); // 형식 : i:s.S $dateArray[12] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[14], PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME7); // 형식 : h:mm:ss;@ $dateArray[13] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[15], PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME8); // 형식 : mm-dd-yy $dateArray[14] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[16], PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14); // 형식 : d-mmm-yy $dateArray[15] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[17], PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15); // 형식 : d-mmm $dateArray[16] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[18], PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX16); // 형식 : mmm-yy $dateArray[17] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[19], PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX17); // 형식 : m/d/yy h:mm $dateArray[18] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[20], PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX22); // 형식 : yy-mm-dd $dateArray[19] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[21], PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD); // 형식 : yyyy-mm-dd $dateArray[20] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[22], PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); // 형식 : yy/mm/dd;@ $dateArray[21] = PHPExcel_Style_NumberFormat::toFormattedString($xlsData[23], PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH); echo "<pre>"; print_r( $dateArray ); echo "</pre>"; ?> |
# 출력결과
■ PHPExcel에서 날짜형식을 지정하여 엑셀파일 생성
이제 반대로 엑셀파일을 생성할때 날짜 형식을 지정해 보자.
# 소스코드
<?php include "./PHPExcel.php"; $objPHPExcel = new PHPExcel(); $objPHPExcel -> setActiveSheetIndex(0) -> setCellValue("A1", date("Y-m-d", time())); $objPHPExcel -> getActiveSheet() -> getStyle("A1") -> getNumberFormat() -> setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); $objPHPExcel -> setActiveSheetIndex(0); $filename = iconv("UTF-8", "EUC-KR", "format_time"); header("Content-Type:application/vnd.ms-excel"); header("Content-Disposition: attachment;filename=".$filename.".xls"); header("Cache-Control:max-age=0"); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel5"); $objWriter -> save("php://output"); ?> |
위 코드를 실행하여 엑셀파일을 다운로드 받고 확인해 보면
아래와 같은 결과를 얻을 수 있다.
# 출력결과
위와 같이 다운받은 엑셀 파일의 데이터를 확인해 보면
날짜 형식이 지정된 것을 확인 할 수 있다.
이밖에도 다른 표시형식의 사용은 아래 PHPExcel API 페이지에 들어가 보면 확인 할 수 있다.
날짜 형식이외에 다른 표시 형식, 셀 서식의 지정이 문제가 되는경우 참고하여 진행하면 될 것이다.
'PHP > PHP Library' 카테고리의 다른 글
[PHP] PHPExcel 시트 추가하기 (0) | 2020.02.11 |
---|---|
[PHP] SimpleSql 라이브러리를 사용한 손쉬운 쿼리사용 (1) | 2018.04.16 |
[PHP] PHP 메일 발송 (5) | 2018.04.10 |
[PHP] PHPExcel 엑셀 파일 업로드 하고 내용 읽기 (0) | 2018.03.22 |
[PHP] PHPExcel 설치하고 엑셀파일 다운받기 (0) | 2018.03.21 |
[PHP] PHPExcel 시트 추가하기[PHP] PHPExcel 시트 추가하기
Posted at 2020. 2. 11. 20:06 | Posted in PHP/PHP Library■ PHPExcel 시트 나누고 데이터 삽입하기
# 소스코드
<?php include "./classes/PHPExcel.php"; $objPHPExcel = new PHPExcel(); $rocketPunch = array( // 첫번째 시트에 사용될 데이터 값 "pinkPunch" => array( "1" => "PINK PUNCH" , "2" => "BIM BAM BUM" , "3" => "Love Is Over" , "4" => "Lucid Dream" , "5" => "Favorite" , "6" => "Do Something" ) // 두번째 시트에 사용될 데이터 값 , "redPunch" => array( "1" => "RED PUNCH" , "2" => "BOUNCY" , "3" => "So Solo" , "4" => "Fireworks" , "5" => "Paper Star" , "6" => "Lilac" , "7" => "Girl Friend" ) ); // @breif Worksheet 라는 이름으로 생성되는 기본 시트를 삭제한다. $objPHPExcel -> removeSheetByIndex(0); // @breif 생성할 시트의 순번 $sheetNum = 0; foreach($rocketPunch as $title => $album) { // @breif createSheet( ) 함수로 새로운 시트를 생성한다. $objWorkSheet = $objPHPExcel -> createSheet($sheetNum); // @breif 엑셀 시트 이름 지정 $objWorkSheet -> setTitle($title); // @breif 타이틀 영역 지정 $objWorkSheet -> setCellValue("A1", "NO."); $objWorkSheet -> setCellValue("B1", "Song"); // @breif 엑셀에 데이터 삽입 $row = 1; foreach($album as $key => $val) { $row++; $objWorkSheet -> setCellValue(sprintf("A%s", $row), $key); $objWorkSheet -> setCellValue(sprintf("B%s", $row), $val); } // @breif 각 행의 간격 $objWorkSheet -> getColumnDimension("A") -> setWidth(10); $objWorkSheet -> getColumnDimension("B") -> setWidth(30); // @breif 각 로우의 디자인 $objWorkSheet -> getStyle(sprintf("A1:B%s", $row)) -> getAlignment() -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objWorkSheet -> getStyle(sprintf("A1:B%s", $row)) -> getBorders() -> getAllBorders() -> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objWorkSheet -> getStyle("A1:B1") -> getFont() -> setBold(true); $objWorkSheet -> getStyle("A1:B1") -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("CECBCA"); $objWorkSheet -> getStyle(sprintf("A2:B%s", $row)) -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("F4F4F4"); // @breif 숫자앞에 기본적으로 0을 붙일 수 있게 한다. $objWorkSheet -> getStyle(sprintf("A2:A%s", $row)) -> getNumberFormat() -> setFormatCode("00"); $sheetNum++; } // @breif 문서를 오픈할 시 첫번째 시트로 열리게 설정 $objPHPExcel -> setActiveSheetIndex(0); // @breif 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다. $filename = iconv("UTF-8", "EUC-KR", "울림_로켓펀치"); header("Content-Type:application/vnd.ms-excel"); header("Content-Disposition: attachment;filename=".$filename.".xls"); header("Cache-Control:max-age=0"); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel5"); $objWriter -> save("php://output"); ?> |
# 출력결과
'PHP > PHP Library' 카테고리의 다른 글
[PHP] PHPExcel 날짜 표시 형식 처리하기 (0) | 2020.04.26 |
---|---|
[PHP] SimpleSql 라이브러리를 사용한 손쉬운 쿼리사용 (1) | 2018.04.16 |
[PHP] PHP 메일 발송 (5) | 2018.04.10 |
[PHP] PHPExcel 엑셀 파일 업로드 하고 내용 읽기 (0) | 2018.03.22 |
[PHP] PHPExcel 설치하고 엑셀파일 다운받기 (0) | 2018.03.21 |
[PHP] SimpleSql 라이브러리를 사용한 손쉬운 쿼리사용[PHP] SimpleSql 라이브러리를 사용한 손쉬운 쿼리사용
Posted at 2018. 4. 16. 16:16 | Posted in PHP/PHP Library다운로드 : https://github.com/cballou/SimpleSql
■ SimpleSQL이란?
뭐라고 자세히 적고 싶지만, 필자도 자세히는 모른다.
PHP상에서 SQL을 쉽게 사용할 수 있도록 해주는 라이브러리 정도라고 밖에는...
해당 포스팅외에도. 당장 GitHub를 뒤져보면.
PHP이외에도 여러 언어들에서 사용가능하고 배포중인 SimpleSQL 라이브러리의 모습을 확인 할 수 있다.
필자도 근무했던 회사에서 사용중이었기에.
관심을 가지고 이것이 어떤것인지 사용방법과 세팅에 대해 공부하기 위해 해당 포스팅을 작성하게 되었다.
필자는 코드이그나이트나, 라라벨 같은 프레임워크를 쓰지 않는 프로젝트에서
자주 사용을 해보려 한다.
■ SimpleSql 라이브러리 세팅하기
-. 해당포스팅의 SimpleSql 라이브러리를 사용하기위해서는 PDO를 사용할 수 있어야 한다.
-. PDO의 사용방법에 관해서는 http://wickedmagica.tistory.com/16 포스팅을 참고하자.
01. https://github.com/cballou/SimpleSql 접속하여 SimpleSql-master.zip 파일을 다운받는다.
02. 압축을 해제한 폴더를 살펴보면 src/CraftBlue/ 경로 안에 SimpleSql.php 파일이 존재한다.
다른 파일상관없이 이 SimpleSql.php 하나만 작업할 프로젝트 경로로 복사하면 된다.
※ 필자의 환경에서는 SimpleSql.php 파일의 아래 두개의 코드로 에러가 발생하여 삭제 or 주석처리 하였다.
SimpleSql.php |
<?php // namespace CraftBlue; // use PDO; class SimpleSql { /*** 기타 생략 ***/ } ?> |
※ 같이 사용할 DB접송 정보 파일
db_info.php |
<?php |
■ SimpleSql을 이용한 데이터 SELECT 하기
01. fetchRow 함수를 사용한 데이터 단건 데이터 조회
# 소스코드
<?php |
# 출력결과
02. fetchRows 함수를 사용한 데이터 다수 데이터 조회
# 소스코드
<?php |
# 출력코드
■ SimpleSql을 이용한 데이터 INSERT 하기
# 소스코드
<?php |
# 쿼리결과
■ SimpleSql을 이용한 데이터 UPDATE 하기
# 소스코드
<?php |
# 소스코드
SimpleSql.php |
<?php /*** 기타 생략 ***/ public function update($table, array $data, $where = array()) { /*** 기타 생략 ***/ // handle data portion /* 쿼리 구문 추가 */ /*** 기타 생략 ***/ } /*** 기타 생략 ***/ ?> |
※ WHERE를 추가한 이유 (공백)WHERE(공백)
update 함수를 실행시 조건을 제시할 WHERE절을 사용하거나 받아오는 부분이 도통 보이지 않았다.
그래서 강제로 " WHERE " 해당 구문을 삽입하여 사용하였다.
■ SimpleSql을 이용한 데이터 DELETE 하기
<?php |
'PHP > PHP Library' 카테고리의 다른 글
[PHP] PHPExcel 날짜 표시 형식 처리하기 (0) | 2020.04.26 |
---|---|
[PHP] PHPExcel 시트 추가하기 (0) | 2020.02.11 |
[PHP] PHP 메일 발송 (5) | 2018.04.10 |
[PHP] PHPExcel 엑셀 파일 업로드 하고 내용 읽기 (0) | 2018.03.22 |
[PHP] PHPExcel 설치하고 엑셀파일 다운받기 (0) | 2018.03.21 |
[PHP] PHP 메일 발송[PHP] PHP 메일 발송
Posted at 2018. 4. 10. 00:11 | Posted in PHP/PHP Library■ PHPMailer 다운받고 세팅하기.
01. https://github.com/PHPMailer/PHPMailer 사이트에 접속하여 PHPMailer-master.zip 파일을 다운받는다.
02. 다운받은 PHPMailer-master.zip 파일의 압축을 해제한다.
※ 필자는 포스팅 작성일 기준으로 PHP5 버전을 사용중이었기에 몇가지 문법이 맞지 않는 문제가 발생했었다.
PHP7 버전을 사용중이라면 문제가 없겠지만 아래 버전을 사용하는 경우는 아래의 문서를 수정하여 사용해야 한다.
첨부파일 : PHPMailer.phpSMTP.php
참고 : http://still.tistory.com/172
참고 : https://support.google.com/a/answer/2520500?hl=ko
■ PHPMailer를 사용한 Gmail 전송
# 소스코드
<?php |
# 출력결과① - 브라우저를 통해 소스코드를 실행 시킨다.
# 출력결과② - 받는 메일함으로 접속을 하면 아래와같이 메일이 성공적으로 도착한 것을 확인 할 수 있다.
■ PHPMailer를 사용한 NAVER 메일 전송
앞서 지메일에서는 CA인증이 필요했지만 네이버 메일에서는 CA인증이 필요치 않았다.
<?php |
# 출력결과① - 브라우저를 통해 코드를 실행한다.
# 출력결과② - 받는메일은 Gmail로 지정하였다.
'PHP > PHP Library' 카테고리의 다른 글
[PHP] PHPExcel 시트 추가하기 (0) | 2020.02.11 |
---|---|
[PHP] SimpleSql 라이브러리를 사용한 손쉬운 쿼리사용 (1) | 2018.04.16 |
[PHP] PHPExcel 엑셀 파일 업로드 하고 내용 읽기 (0) | 2018.03.22 |
[PHP] PHPExcel 설치하고 엑셀파일 다운받기 (0) | 2018.03.21 |
[PHP] PHP QR코드 이미지 저장하고 띄우기 (0) | 2018.03.16 |