[PHP] PHPExcel 파일 업로드 하고 내용 읽어들이기

PHP/PHP Programming 2018. 1. 23. 10:23



■ PHPExcel 파일 업로드 하고 내용 읽어들이기




# 엑셀 파일 업로드 소스코드

 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>




# 엑셀 파일 읽기 소스코드

 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($i = 0; $i < $sheetsCount; $i++) {


          $objPHPExcel -> setActiveSheetIndex($i);

          $sheet = $objPHPExcel -> getActiveSheet();

          $highestRow = $sheet -> getHighestRow();    // 마지막 행

          $highestColumn = $sheet -> getHighestColumn(); // 마지막 컬럼


          // 한줄읽기

          for($row = 1; $row <= $highestRow; $row++) {


            // $rowData가 한줄의 데이터를 셀별로 배열처리 된다.

            $rowData = $sheet -> rangeToArray("A" . $row . ":" . $highestColumn . $row, NULL, TRUE, FALSE);


            // $rowData에 들어가는 값은 계속 초기화 되기때문에 값을 담을 새로운 배열을 선안하고 담는다.

            $allData[$row] = $rowData[0];

          }

}

} catch(exception $e) {

echo $e;

}


echo "<pre>";

print_r($allData);

echo "</pre>";

?>




# 출력결과 ①




# 출력결과 ②





[PHP] PHPExcel 라이브러리 설치 및 엑셀 출력하기

PHP/PHP Programming 2018. 1. 22. 13:57




■ PHPExcel 라이브러리 설치하기




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





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













■ PHPExcel 라이브러리 Excel 파일 다운받기



# 소스코드

 php_excel.php

<?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() -> getRowDimension(1) -> setRowHeight(23);


// 내용 지정

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

?>



# 출력결과



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





[PHP] QR코드 이미지 저장하고 띄우기

PHP/PHP Programming 2018. 1. 19. 17:25




■ QR코드를 이미지로 저장하고 가지고오기




먼저 이전 예제에서 사용한 QR코드를 그대로 가져와 보려고한다.





# 소스코드 

 php_qrcode_01.php

 <?php

    include_once "./phpqrcode/qrlib.php";


ob_start("colback");

    

$codeText = "안녕하세요 반갑습니다.";

    

$debugLog = ob_get_contents();


ob_end_clean();


        QRcode::png($codeText);

?>




# 소스코드 ②

 php_qrcode_02.php

<?php
    echo "<img src='php_qrcode_01.php'/>";
?>




# 출력결과












■ QR코드를 이미지로 저장하고 가지고오기




이번에는 생성한 QR코드를 저장하고 이미지를 불러오도록 해 보자.



# 소스코드

php_qrcode_03.php

<?php
    include_once "./phpqrcode/qrlib.php";
       
    $codeContents = "WickedMISO";
   
    $fileName = md5($codeContents).".png";
   
    $filePath = $fileName;
   
    if(!file_exists($filePath)) {
        QRcode::png($codeContents, $filePath);
        echo "파일이 정상적으로 생성되었습니다.";
        echo "<hr/>";
    } else {
        echo "파일이 이미 생성되어 있습니다.\n파일을 지우거나 이름을 바꾸어 실행하세요.";
        echo "<hr/>";
    }
   
    echo "저장된 파일명 : ".$filePath;
    echo "<hr/>";
   
    echo "<img src='".$filePath."'/>";
?>



# 출력결과




# 파일생성






[PHP] PHP QR Code 세팅하기

PHP/PHP Programming 2018. 1. 18. 18:12




샘플코드 : http://phpqrcode.sourceforge.net/examples/index.php




■ PHP QR Code 설치하기




※ QR코드를 생성하기 위해서는 PHP GD가 사용 가능한 상태여야 한다.

    php.ini를 오픈하여 extension=php_gd2.dll 파일을 확인해보자.

   사용이 가능하지 않는 상태라면 extension=php_gd2.dll의 주석( ; ) 을 제거하고 Apache를 재시작한 뒤 진행하자.





01. https://sourceforge.net/projects/phpqrcode/files/ 사이트에 접속하여 PHP QR Code 라이브 러리를 다운받는다.





02. 잠시 기다리고 있으면 phpqrcode.zip 파일을 다운받을 수 있다.

    (몇초정도 기다린 후 다운여부를 묻는 팝업창이 뜬다.)






03. 다운받은 phpqrcode.zip 파일의 압축을 해제한다.










■ PHP QR Code를 사용하여 QR코드 생성하기




이제 본격적으로 QR코드를 생성해보자.



# 소스코드

 php_qrcode_01.php

 <?php


    // 압축을 해제한 phpqrcode 폴더의 grlib.php 파일을 include한다.
    include_once "./phpqrcode/qrlib.php";
   
    // 출력 버퍼 사용 시작!!
    ob_start("colback");
   
    $codeText = "안녕하세요 반갑습니다.";
   
    // 출력 버퍼의 내용을 변수로 저장한다.
    $debugLog = ob_get_contents();

    // 출력 버퍼의 내용을 출력하지 않고, 출력 버퍼를 비우고 종료한다.
    // 출력 버퍼의 내용은 반드시 비워야 한다.
    ob_end_clean();

    QRcode::png($codeText);
?>




# 출력결과




위와같이 QR코드가 정상적으로 생성되는것을 확인 할 수 있다.






[PHP] DB입력시 따옴표(')를 처리하는 addslashes, stripslashes 함수

PHP/PHP Programming 2018. 1. 18. 14:10




■ DB입력시 따옴표(')를 처리하는 addslashes, stripslashes 함수




 PHP에서 문자열에 따옴표(큰 따옴표 : ", 작은 따옴표 : ')가 들어간 내용을 DB 값으로 집어 넣을때 addslashes, stripslashes 를 사용한다.

그런데 HTML에 직접 값을 넣지않고, PHP에서 바로 출력하는 경우 문제가 생겨 간단히 정리하고자 한다.


 ① addslashes : 문자열에 따옴표가 사입된 경우 문자열 앞에 역슬래시(\')를 붙인다.

 ② stripslashes : addslashes를 사용한 해당 문자열의 역슬래시를 제거한다.


 단순하지만 아래 출력 코드와 같이 input 트그에 값을 넣눈경우가 있어 이렇게 저리해 보고자 ㅏ않다.



# 출력코드

 quotation_marks.php

<?

// 테스트할 따옴표가 들어간 문구

$str = "Rockin' In Rhythm";


echo $str;

echo "<br/><hr/><br/>";


// addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')

echo "addslashes : ".addslashes($str);

echo "<br/><hr/><br/>";


// stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')

echo "stripslashes  : ".stripslashes($str);

echo "<br/><hr/><br/>";


// value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.

echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>




# 출력결과



위와같이 INPUTE 타입에 콤마를 삽입하는 경우 \"%s\" 로 감싸서 해결하였다.

단순한 실수 지만 순간 왜그러지 라고 계속 생각하느라 시간을 잡아 먹어서 이럻게 정리해 본다.