PHP PHP 엑셀 다운로드 시 셀 서식(mso-number-format) 지정하기
페이지 정보
이벤트 참가자 정보를 엑셀로 저장하는데 핸드폰 번호 '010...' 가 숫자로 출력되니 '10...' 로 나온다.
원래대로 '010...' 으로 나오게 하려면 숫자가 아닌 텍스트로 출력해야 한다.
셀 서식 지정할 때는 데이터 출력하는 html의 style에 MSO FORMAT을 지정하면 된다.
header("Content-type: application/vnd.ms-excel; charset=UTF-8");
header("Content-Disposition: attachment; filename = userIdentify".date("YmdHis").".xls");
header("Content-Description: PHP5 Generated Data");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
// DB커넥션 파일(PDO)
require_once($_SERVER['DOCUMENT_ROOT'].'/Connection/dbconnect.php');
// 검색 조건 설정
...(생략)
// 데이터 조회
...(생략)
?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
th,td{border:0.6px solid #666;}
th{background-color: yellow;}
</style>
</head>
<body>
<h3>Table</h3>
<table>
<tr>
<th>이름</th>
<th>전화번호</th>
</tr>
<? while($rows=$stmt->fetch(PDO::FETCH_ASSOC)){ ?>
<tr>
<td><?=$rows['userName']?></td>
<!--셀 서식을 Text로 지정-->
<td style="mso-number-format:'\@'"><?=$rows['userPhone']?></td>
</tr>
<? } ?>
</table>
</body>
</html>
검색해 보면 다른 타입도 많이 나온다. 그러나 실제 사용하는 건 텍스트 형식(\@) 정도인 듯 하다.
(텍스트로 지정 하면 데이터 출력하는 그대로 나온다.)
mso-number-format:"\@"
Text // 텍스트
mso-number-format:"0"
NO Decimals // 소수점 없음
mso-number-format:"0.000"
3 Decimals // 소수점 3자리까지
mso-number-format:"#\,##0.000"
Comma with 3 dec // 숫자 자릿수 구분(,)+소수점 3자리
mso-number-format:"mm\/dd\/yy"
월/일/연도 형식 (05/15/16)
mso-number-format:"mmmm\ d\,\ yyyy"
'mmmm' 하면 월을 영문으로 표시한다. (January 1,2016)
mso-number-format:"d-mmm-yyyy"
01-mar-1998 형식. 월 표기가 다르다.
mso-number-format:"Short Date"
01/03/1998 형식. 간단하게 지정
mso-number-format:"Medium Date"
01-mar-98
mso-number-format:"m\/d\/yy\ h\:mm\ AM\/PM"
날짜 + 시간을 AM/PM으로 구분해서 표시
mso-number-format:"Short Time"
5:16 // 시간만 간단하게
mso-number-format:"Medium Time"
5:16 am
mso-number-format:"Long Time"
5:16:21:00 // 밀리 초(ms) 단위까지
mso-number-format:"Percent"
Percent - two decimals // 퍼센트 기호 + 소수점 2자리까지
mso-number-format:"0%"
Percent - no decimals // 소수점 없는 퍼센트
mso-number-format:"0.E+00"
Scientific Notation // 엑셀에서 숫자 자릿수가 매우 클 때 줄여서 표시되는 그 형식..
mso-number-format:"#\ ???\/???"
Fractions - up to 3 digits (312/943) , 분수형식
mso-number-format:"\0022£\0022#\,##0.00"
£12.76 // 영국 파운드 기호로 통화 표시(원화 표시는 없을까?)
mso-number-format:"#\,##0.00_ \;[Red]-#\,##0.00\ "
2 decimals, negative numbers in red and signed(1.56 -1.56) // 음수는 색깔을 따르게 표시
- 이전글PHP 엑셀 다운로드 시 숫자 앞자리 0이 사라지지 않게 하기 20.04.29