[PHP] PHPExcel 서식 변경하기[PHP] PHPExcel 서식 변경하기

Posted at 2018. 8. 29. 18:35 | Posted in PHP




■ PHPExcel 서식 변경하여 숫자값 나타내기





#01. 앞자리가 0으로 끝나는 문자열 출력하기



엑셀 문서 작업중에서는 앞자리가 0으로 끝나야 하는 경우의 수가 발생한다.




위 이미지처럼 셀 서식에서 미리 앞자리에 0이 삽입될 수 있게끔 서식을 지정하면 되는데.


PHPExcel에서도 0이 앞으로 나오게끔 할 수 있고 그것을 지원해 주는 함수가 존재한다.


<?php

      $objPHPExcel -> getActiveSheet() -> getStyle("A1") -> getNumberFormat() -> setFormatCode("00000");

?>


0이 앞자리에 들어갈 탭을 getStyle( )사용하여 지정하고 getNumberFormat( ), setFormatCode( ) 위 두개의 함수를 사용하면 가능한데.


그 예는 아래와 같다.



# 소스코드

<?php
include "./PHPExcel-1.8/Classes/PHPExcel.php";
$objPHPExcel = new PHPExcel();

$arrVelvet = array();


// 앞자리가 0으로 끝나는 숫자값을 number에 담는다.

$arrVelvet[1] = array("number" => "00001", "name" => "아이린", "position" => "센터, 리더, 메인래퍼", "birthday" => "03월 29일");
$arrVelvet[2] = array("number" => "00002", "name" => "슬기", "position" => "리드보컬, 메인댄서", "birthday" => "02월 10일");
$arrVelvet[3] = array("number" => "00003", "name" => "웬디", "position" => "메인보컬", "birthday" => "02월 21일");
$arrVelvet[4] = array("number" => "00004", "name" => "조이", "position" => "리드래퍼, 서브보컬", "birthday" => "09월 03일");
$arrVelvet[5] = array("number" => "00005", "name" => "예리", "position" => "서브래퍼, 서브보컬", "birthday" => "03월 05일");

$objPHPExcel -> setActiveSheetIndex(0)
    -> setCellValue("A1", "NO.")
    -> setCellValue("B1", "이름")
    -> setCellValue("C1", "포지션")
    -> setCellValue("D1", "생일");

$count = 1;
foreach($arrVelvet as $key => $val) {
    $num = 1 + $key;
    $objPHPExcel -> setActiveSheetIndex(0)
    -> setCellValue(sprintf("A%s", $num), $val['number'])
    -> setCellValue(sprintf("B%s", $num), $val['name'])
    -> setCellValueExplicit(sprintf("C%s", $num), $val['position'])
    -> setCellValue(sprintf("D%s", $num), $val['birthday']);
    $count++;
}

$objPHPExcel -> getActiveSheet() -> getColumnDimension("A") -> setWidth(10);
$objPHPExcel -> getActiveSheet() -> getColumnDimension("B") -> setWidth(12);
$objPHPExcel -> getActiveSheet() -> getColumnDimension("C") -> setWidth(30);
$objPHPExcel -> getActiveSheet() -> getColumnDimension("D") -> setWidth(15);

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:D%s", $count)) -> getAlignment() -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:D%s", $count)) -> getBorders() -> getAllBorders() -> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel -> getActiveSheet() -> getStyle("A1:D1") -> getFont() -> setBold(true);
$objPHPExcel -> getActiveSheet() -> getStyle("A1:D1") -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("CECBCA");
$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A2:D%s", $count)) -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("F4F4F4");


// getNumberFormat(), setFormatCode() 함수를 사용한다.
// setFormatCode() 함수에 앞자리 0이 출력되게끔 문자열의 자리수 만큼 0을 입력한다.
$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A2:A%s", $count)) -> getNumberFormat() -> setFormatCode("00000");



$objPHPExcel -> getActiveSheet() -> setTitle("레드벨벳");
$objPHPExcel -> setActiveSheetIndex(0);
$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");
?>



# 출력결과 - 엑셀 파일 다운로드




# 출력결과 - 엑셀 파일 결과값









#02. 천단위 숫자에 콤마( , ) 기호 삽입하기


이번에는 엑셀에서 천단위가 넘어가는 숫자값에 자동으로 콤마( , )가 삽입되는 서식이다.



이번에는 setFormatCode( ) 안에 #,##0 을 입력하면 된다.


<?php

      $objPHPExcel -> getActiveSheet() -> getStyle("A1") -> getNumberFormat() -> setFormatCode("#,##0");

?>


이 방식을 활용한 예제는 아래와 같다.



# 소스코드

<?php
include "./PHPExcel-1.8/Classes/PHPExcel.php";
$objPHPExcel = new PHPExcel();

$arrChicken = array();
$arrChicken[1] = array("name" => "굽네치킨", "site" => "www.goobne.co.kr", "brand" => "1555064");
$arrChicken[2] = array("name" => "교촌치킨", "site" => "www.kyochon.com", "brand" => "1513807");
$arrChicken[3] = array("name" => "맘스터치", "site" => "www.momstouch.co.kr", "brand" => "1492470");
$arrChicken[4] = array("name" => "BBQ", "site" => "www.bbq.co.kr", "brand" => "1149937");
$arrChicken[5] = array("name" => "BHC", "site" => "www.bhc.co.kr", "brand" => "1028167");
$arrChicken[6] = array("name" => "네네치킨", "site" => "nenechicken.com", "brand" => "717022");
$arrChicken[7] = array("name" => "처갓집양념치킨", "site" => "www.cheogajip.co.kr", "brand" => "344319");
$arrChicken[8] = array("name" => "또래오래", "site" => "www.toreore.com", "brand" => "333237");
$arrChicken[9] = array("name" => "호식이두마리치킨", "site" => "www.9922.co.kr", "brand" => "329789");
$arrChicken[10] = array("name" => "페리카나", "site" => "www.pelicana.co.kr", "brand" => "249857");
$arrChicken[11] = array("name" => "멕시카나", "site" => "www.mexicana.co.kr", "brand" => "235892");
$arrChicken[12] = array("name" => "지코바양념치킨", "site" => "www.gcova.co.kr", "brand" => "214345");
$arrChicken[13] = array("name" => "또봉이통닭", "site" => "ttobongee.com", "brand" => "121882");
$arrChicken[14] = array("name" => "멕시칸치킨", "site" => "www.mexicanchicken.co.kr", "brand" => "88719");
$arrChicken[15] = array("name" => "마파치킨", "site" => "www.mapachicken.co.kr", "brand" => "83152");
$arrChicken[16] = array("name" => "부어치킨", "site" => "www.boor.co.kr", "brand" => "81520");
$arrChicken[17] = array("name" => "훌랄라참숯바베큐", "site" => "www.hoolala.co.kr", "brand" => "22720");

$objPHPExcel -> setActiveSheetIndex(0)
    -> setCellValue("A1", "NO.")
    -> setCellValue("B1", "이름")
    -> setCellValue("C1", "사이트")
    -> setCellValue("D1", "브랜드평가");


$count = 1;
foreach($arrChicken as $key => $val) {
    $num = 1 + $key;
    $objPHPExcel -> setActiveSheetIndex(0)
    -> setCellValue(sprintf("A%s", $num), $key)
    -> setCellValue(sprintf("B%s", $num), $val['name'])
    -> setCellValueExplicit(sprintf("C%s", $num), $val['site'])
    -> setCellValue(sprintf("D%s", $num), $val['brand']);
    $count++;
}

$objPHPExcel -> getActiveSheet() -> getColumnDimension("A") -> setWidth(8);
$objPHPExcel -> getActiveSheet() -> getColumnDimension("B") -> setWidth(20);
$objPHPExcel -> getActiveSheet() -> getColumnDimension("C") -> setWidth(30);
$objPHPExcel -> getActiveSheet() -> getColumnDimension("D") -> setWidth(18);

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:D%s", $count)) -> getAlignment() -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:D%s", $count)) -> getBorders() -> getAllBorders() -> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel -> getActiveSheet() -> getStyle("A1:D1") -> getFont() -> setBold(true);
$objPHPExcel -> getActiveSheet() -> getStyle("A1:D1") -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("CECBCA");
$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A2:D%s", $count)) -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("F4F4F4");


// getNumberFormat(), setFormatCode() 함수를 사용한다.
// setFormatCode() 함수에 천단위를 나타내는 서식인 #,##0 입력한다.

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("D2:D%s", $count)) -> getNumberFormat() -> setFormatCode("#,##0");


$objPHPExcel -> getActiveSheet() -> setTitle("치킨전문점 브랜드평가 8월");
$objPHPExcel -> setActiveSheetIndex(0);
$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");
?>




# 출력결과 - 엑셀 파일 다운로드





# 출력결과 - 엑셀 파일 결과값







Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[PHP] PHPExcel 엑셀 파일 업로드 하고 내용 읽기[PHP] PHPExcel 엑셀 파일 업로드 하고 내용 읽기

Posted at 2018. 3. 22. 09:37 | Posted in PHP/PHP Library




■ *.xls 파일 업로드 하고 내용 읽기




# 소스코드 - 엑셀 파일 업로드 excel_upload.php

<html>
<head>
<title>:: PHPExcel 파일읽기 ::</title>
</head>
<form enctype="multipart/form-data" action="./excel_read.php" method="post">
<table border="1">
    <tr>
        <th style="background-color:#DCDCDC">파일</th>
        <td><input type="file" name="excelFile"/></td>
    </tr>
    <tr>
        <th style="background-color:#DCDCDC">등록</th>
        <td style="text-align:center;"><input type="submit" value="업로드"/></td>
    </tr>
</form>
</html>

<html>

<head>

<title>:: PHPExcel 파일읽기 ::</title>

</head>

<form enctype="multipart/form-data" action="./excel_read.php" method="post">

<table border="1">

<tr>

<th style="background-color:#DCDCDC">파일</th>

<td><input type="file" name="excelFile"/></td>

</tr>

<tr>

<th style="background-color:#DCDCDC">등록</th>

<td style="text-align:center;"><input type="submit" value="업로드"/></td>

</tr>

</form>

</html>



출처: http://wickedmagic.tistory.com/584?category=613655 [사악미소의 현대마법의 공방]




# 소스코드 - 엑셀 파일 읽기 excel_read.php

<?php
include "./PHPExcel-1.8/Classes/PHPExcel.php";

$objPHPExcel = new PHPExcel();

// 엑셀 데이터를 담을 배열을 선언한다.
$allData = array();

// 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다.
$filename = iconv("UTF-8", "EUC-KR", $_FILES['excelFile']['name']);

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 = 1; $row <= $highestRow; $row++) {

            // $rowData가 한줄의 데이터를 셀별로 배열처리 된다.
            $rowData = $activesheet -> rangeToArray("A" . $row . ":" . $highestColumn . $row, NULL, TRUE, FALSE);

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

echo "<pre>";
print_r($allData);
echo "</pre>";
?>




# 출력결과 - 엑셀 파일 업로드




# 출력결과 - 엑셀 내용 출력





Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[PHP] PHPExcel 설치하고 엑셀파일 다운받기[PHP] PHPExcel 설치하고 엑셀파일 다운받기

Posted at 2018. 3. 21. 17:08 | Posted in PHP/PHP Library




■ PHPExcel 라이브러리 설치하기




01. https://github.com/PHPOffice/PHPExcel 사이트에 접속하여 PHP Excel 라이버러리 파일을 다운받는다.




02. 다운받은 파일의 압축을 해제한다.








Excel 파일 다운받기


# 소스코드

01. https://github.com/PHPOffice/PHPExcel 사이트에 접속하여 PHP Excel 라이브러리 파일을 다운받자.

출처: http://wickedmagic.tistory.com/583 [사악미소의 현대마법의 공방]

<?php

include "./PHPExcel-1.8/Classes/PHPExcel.php";


$objPHPExcel = new PHPExcel();


$arrTwice = array();

$arrTwice[1] = array("name" => "나연", "position" => "리드보컬, 리드댄서", "birthday" => "09월 22일");

$arrTwice[2] = array("name" => "정연", "position" => "리드보컬", "birthday" => "11월 01일");

$arrTwice[3] = array("name" => "모모", "position" => "서브보컬, 메인댄서, 서브래퍼", "birthday" => "11월 09일");

$arrTwice[4] = array("name" => "사나", "position" => "서브보컬", "birthday" => "12월 29일");

$arrTwice[5] = array("name" => "지효", "position" => "리더, 메인보컬", "birthday" => "02월 01일");

$arrTwice[6] = array("name" => "미나", "position" => "서브보컬, 메인댄서, 서브래퍼", "birthday" => "03월 24일");

$arrTwice[7] = array("name" => "다현", "position" => "리드래퍼, 서브보컬", "birthday" => "05월 28일");

$arrTwice[8] = array("name" => "채영", "position" => "메인래퍼, 서브보컬", "birthday" => "04월 23일");

$arrTwice[9] = array("name" => "쯔위", "position" => "서브보컬, 리드댄서", "birthday" => "06월 14일");


$objPHPExcel -> setActiveSheetIndex(0)

-> setCellValue("A1", "NO.")

-> setCellValue("B1", "이름")

-> setCellValue("C1", "포지션")

-> setCellValue("D1", "생일");


$count = 1;

foreach($arrTwice as $key => $val) {

$num = 1 + $key;

$objPHPExcel -> setActiveSheetIndex(0)

-> setCellValue(sprintf("A%s", $num), $key)

-> setCellValue(sprintf("B%s", $num), $val['name'])

-> setCellValueExplicit(sprintf("C%s", $num), $val['position'])

-> setCellValue(sprintf("D%s", $num), $val['birthday']);

$count++;

}


// 가로 넓이 조정

$objPHPExcel -> getActiveSheet() -> getColumnDimension("A") -> setWidth(6);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("B") -> setWidth(12);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("C") -> setWidth(30);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("D") -> setWidth(15);


// 전체 가운데 정렬

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:D%s", $count)) -> getAlignment()

-> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);


// 전체 테두리 지정

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:D%s", $count)) -> getBorders() -> getAllBorders()

-> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);


// 타이틀 부분

$objPHPExcel -> getActiveSheet() -> getStyle("A1:D1") -> getFont() -> setBold(true);

$objPHPExcel -> getActiveSheet() -> getStyle("A1:D1") -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID)

-> getStartColor() -> setRGB("CECBCA");


// 내용 지정

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A2:D%s", $count)) -> getFill()

-> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("F4F4F4");


// 시트 네임

$objPHPExcel -> getActiveSheet() -> setTitle("트와이스");


// 첫번째 시트(Sheet)로 열리게 설정

$objPHPExcel -> setActiveSheetIndex(0);


// 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다.

$filename = iconv("UTF-8", "EUC-KR", "트와이스_TWICE");


// 브라우저로 엑셀파일을 리다이렉션

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");

?>



# 출력결과



위 이미지와 같이 엑셀파일이 생성되는 것을 확인 할 수 있다.




Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기