PHP 개발팁2013. 6. 7. 17:44

기존 엑셀 2003까지 버전은 확장자가 xls 로 생성되며 한시트에 최대 65,535 라인까지 처리할 수 있다.

그 이상의 행을 처리하려면 엑셀 2007 이상의 버전에서 xlsx 파일로 생성해야 한다. (100만 라인까지 가능)


기본 65,535라인을 넘는 데이터를 처리해야 할 경우 PHPExcel 클래스를 이용해 간단히 처리할 수 있다.

참고로 서버에 zip 라이브러리가 설치되어 있어야 한다.


먼저 PHPExcel 클래스를 다운로드 받자

http://www.codeplex.com/PHPExcel 에 방문하여 최신 버전을 내려받는다.


현재 기준으로 1.7.9 버전이 최신이다.

파일을 내려 받으면 PHPExcel_1.7.9_doc.zip 라는 파일이 받아진다.

압축을 풀어 서버에 업로드 한다. 


나의 경우에는 서버 계정의 _lib 디렉토리에 업로드 하고 디렉토리명을 PHPExcel 로 설정했다.


POST로 엑셀파일을 업로드 하는 폼 페이지는 생략 하겠다.

아래는 폼 페이지에서 파일을 업로드 하면 실행하는 파일이다.

(POST 로 날라오는 파일 폼 이름이  "upfile" 이라 정하면)


<?php

include $_SERVER["DOCUMENT_ROOT"]."/_lib/PHPExcel/Classes/PHPExcel.php";

$UpFile = $_FILES["upfile"];

$UpFileName = $UpFile["name"];


$UpFilePathInfo = pathinfo($UpFileName);
$UpFileExt = strtolower($UpFilePathInfo["extension"]);

if($UpFileExt != "xls" && $UpFileExt != "xlsx") {
echo "엑셀파일만 업로드 가능합니다. (xls, xlsx 확장자의 파일포멧)";
exit;
}

//-- 읽을 범위 필터 설정 (아래는 A열만 읽어오도록 설정함  => 속도를 중가시키기 위해)
class MyReadFilter implements PHPExcel_Reader_IReadFilter
{
public function readCell($column, $row, $worksheetName = '') {
// Read rows 1 to 7 and columns A to E only
if (in_array($column,range('A','A'))) {
return true;
}
return false;
}
}
$filterSubset = new MyReadFilter();

//업로드된 엑셀파일을 서버의 지정된 곳에 옮기기 위해 경로 적절히 설정
$upload_path = $_SERVER["DOCUMENT_ROOT"]."/Uploads/Excel_".date("Ymd");
$upfile_path = $upload_path."/".date("Ymd_His")."_".$UpFileName;
if(is_uploaded_file($UpFile["tmp_name"])) {

if(!move_uploaded_file($UpFile["tmp_name"],$upfile_path)) {
echo "업로드된 파일을 옮기는 중 에러가 발생했습니다.";
exit;
}

//파일 타입 설정 (확자자에 따른 구분)
$inputFileType = 'Excel2007';
if($UpFileExt == "xls") {
$inputFileType = 'Excel5';
}

//엑셀리더 초기화
$objReader = PHPExcel_IOFactory::createReader($inputFileType);

//데이터만 읽기(서식을 모두 무시해서 속도 증가 시킴)
$objReader->setReadDataOnly(true);

//범위 지정(위에 작성한 범위필터 적용)
$objReader->setReadFilter($filterSubset);

//업로드된 엑셀 파일 읽기
$objPHPExcel = $objReader->load($upfile_path);

//첫번째 시트로 고정
$objPHPExcel->setActiveSheetIndex(0);

//고정된 시트 로드
$objWorksheet = $objPHPExcel->getActiveSheet();

  //시트의 지정된 범위 데이터를 모두 읽어 배열로 저장
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
$total_rows = count($sheetData);

foreach($sheetData as $rows) {

$fieldData = $rows["A"]; //A열값을 가져온다.
    /* 데이터 처리 */

}

}
.
.
?>


위 데이터 처리 부분에 원하는 처리를 하면 되겠다.

데이터를 100만건까지 처리 하다보니 서버의 부담이 커서 데이터 시트 범위를 정하고, 서식을 모두 버리고 데이터만 처리하도록 세팅했다.


위 내용은 PHPExcel 라이브러리를 받아 내부에 문서를 보면 다 나와있는 내용이긴 하지만, 사용하려는 분들이 좀 더 쉽게 사용하시라고 예제를 만들어봤다. (실제 사용해 보니 잘 돌아간다.)


끝으로 PHPExcel 라이브러리를 만들어준 분께 감사드린다.

Posted by webdata
Spac Download2012. 2. 28. 11:05



box.gifSpac 12.2.1


Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.






Spac 매뉴얼 보러가기 : http://www.phpwork.kr/Manual
다운로드 받으러 가기 : http://www.phpwork.kr/Downloads/viewDownloadsList/Spac 


이전버전 사용자는 아래의 내용을 참조하여 업데이트 해주시기 바랍니다.
  1. Spac/viewTemplate 디렉토리내의 ViewTemplate.Class.php 파일 덮어쓰기
  2. Spac/Dao 디렉토리내의 Dao.Class.php 파일 덮어쓰기
  3. Spac /controller/SpacSession 디렉토리와 내부 파일 모두 복사
  4. Spac /ActionClass.Class.php 파일 덮어쓰기
  5. Spac /Controller.Class.php 파일 덮어쓰기


업데이트 내역은 다음과 같습니다.

  1. 템플릿태그 사용시 {= } 내부에서도 {} 를 중복 사용 가능 처리
  2. MySQL Dao 사용시 프로시저호출 에러 수정
  3. MySQL Dao 디버깅 기능 추가 (Dao.Class.php 30 라인 설정변경)   ☞ (매뉴얼참조)
  4. MySQL Dao 바인딩 방식 추가(바인딩 쿼리에 "?" 와 ":VAR" 방식 모두 사용 가능하도록 처리) ☞ (매뉴얼참조)
  5. 리터럴, 바인딩 관계없이 "execute" 메서드로 쿼리 실행 가능하도록 처리 ☞ (매뉴얼참조)
  6. Spac 자체 세션컨트롤 추가(DB 세션을 사용하며, 내장 MySQL Dao 를 사용)   ☞ (매뉴얼참조)
  7. 기타 몇가지 코드개선
License[Spac V.12.2.1]
1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
Posted by webdata
Spac Download2011. 12. 1. 13:50

box.gif

Spac 11.12.1


Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.



Spac 매뉴얼 보러가기 : http://www.phpwork.kr/Manual
다운로드 받으러 가기 : http://www.phpwork.kr/Downloads/viewDownloadsList/Spac

이번 버전은 템플릿 태그관련 코드만 수정되었습니다.

따라서 이전버전 사용자는 Spac/viewTemplate 디렉토리내의 ViewTemplate.Class.php 파일만 기존 파일에 덮어쓰시면 됩니다.


업데이트 내역은 다음과 같습니다.

  1. 뷰에 한글변수 사용할 수 있도록 수정
License1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
Posted by webdata
Spac Download2011. 9. 22. 10:23

spac_manual_book.png

Spac PHP프레임워크의 매뉴얼 문서입니다.

PDF문서로 제작되어져 쉽게 확인 할 수 있습니다.

이 문서는 Spac 프레임워크 11.9.1 버전을 기준으로 작성됐습니다.


파일형식 : PDF

페이지분량 : 266페이지

파일용량 : 약 6MB (압축을 푼 PDF파일 기준)





 목차

1장. Spac이란

2장. 개발환경구성하기

3장. 프로그램의 작성

4장. 간단한 예제를 통한 Spac 맛보기

5장. 접근제어

6장. 뷰템플릿

7장. 뷰레이아웃

8장. 데이터베이스 처리

9장. 부가기능

10장. 에러처리및 로깅

11장. Spac의 메서드및 맴버변수

12장. Spac 컨트롤러의 환경설정

13장. 종합예제 - 프로젝트환경 만들기

14장. 종합예제1 - 게시판만들기

15장. 종합예제2 - 회원관리


btn_download.png 

자세한 내용은 아래의 사이트를 방문해주시기 바랍니다.
http://www.phpwork.kr 


License본 자료는 누구나 다운로드받고 이용하실 수 있습니다.
본 사이트에서 배포된 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포가 가능합니다.
Posted by webdata
Spac Download2011. 9. 21. 11:48

box.gif

Spac 11.9.1


Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.



Spac 매뉴얼 보러가기http://www.phpwork.kr/Manual
다운로드 받으러 가기 : http://www.phpwork.kr/Downloads/viewDownloadDetail/0/1/67


이전버전 사용자는 controller 디렉토리내의 'ActionClass.Class.php' 파일과 'Controller.Class.php' 파일을 기존 파일이 덮어 써 주시고"Controller.ini" 파일의 55~57 라인의 내용을 기존 파일에 추가합니다.


업데이트 내역은 다음과 같습니다.

  1. 디폴트 액션 클래스 지정기능 추가 (http://www.phpwork.kr/Manual/viewContents/100 참조)
License1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
Posted by webdata
Spac Download2011. 7. 6. 16:37

Spac 11.7.1


php 프레임워크 Spac  11.7.1을 공개합니다.

Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.


이전버전 사용자는 controller 디렉토리내의 'ActionClass.Class.php' 파일과 'Controller.Class.php' 파일을 기존 파일이 덮어 쓰면 업데이트 됩니다.


업데이트 내역은 다음과 같습니다.

  1. INI 파일 완벽 분리 지원
  2. 뷰 캐시 자동업데이트 오류 수정 
License1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
..


.

Posted by webdata
Spac Download2011. 5. 18. 14:55

Spac 11.5.1

Spac 은 Simple Php Action Class 의 약자로서 PHP웹프로그램 개발시 사용하는 클래스기반의 PHP프레임워크입니다.

설치 및 환경설정은 http://www.phpwork.kr/Manual/viewContents/2 를 참고하시면 됩니다.

케릭터셋은 UTF-8 입니다.



btn_download.png



  1. 윈도우 서버에서 운용시 뷰캐시 자동 업데이트가 되지 않는 현상 수정
  2. URL Path 경로 가져오는 방법 수정 ($_SERVER['PATH_INFO'] 사용할 수 없을 시 적용)
  3. 뷰레이아웃 사용시 Layout.ini 파일 설정만으로 result_uri 생략하여 출력 가능하도록 수정
  4. 이전 버전 사용자는 파일을 받아 압축을 푼 뒤 Controller.Class.php, Controller.ini 파일만 수정 적용 합니다.
    - Controller.Class.php 파일을 기존 파일에 덮어 씁니다.
    - Controller.ini 파일의 10~11 라인에 있는 "path_type" 설정을 기존 파일에 추가합니다.
  5. 이 버전은 이전버전에서 업데이트 해도 사용자의 프로그램에 영향을 주지 않습니다. 
 

License1. 개인/기업/영리/비영리 관계없이 웹개발에 무료로 사용할 수 있습니다.
2. 프레임워크 내의 소스를 사용자 환경에 맞게 수정해 사용할 수는 있으나, 이렇게 수정된 Spac 소스나, 수정된 Spac 소스가 포함된 프로그램, 또는 Spac 소스중의 일부분을 타인에게 배포하거나 판매할 수 없습니다.
3. 소스내의 주석문은 어떠한 경우라도 수정/삭제할 수 없습니다. (Spac에 의해 자동생성된 파일내의 내용 포함)
4. 원작자가 배포한 상태 그대로(수정되지 않은)인 경우에 한해 자유롭게 재배포할 수 있습니다.
5. 이 프로그램의 사용으로 인해 발생하는 어떠한 문제도 제작자는 책임지지 않습니다.
 
Posted by webdata
Spac Download2011. 3. 7. 16:15
다음 마이피플용 문자발송 PHP 소스입니다.
웹 프로그램에 사용하여 자신의 휴대폰(아이폰,안드로이드폰)으로 마이피플 메세지를 발송할 수 있습니다. 

다음에서 API를 정식으로 공개하지 않았기때문에 이 클래스는 다음의 정책에 의해 작동되지 않을 수도 있습니다.

Spac 프레임워크가 없어도 사용하는데 아무 문제 없습니다.

[다운로드받으러가기]


Posted by webdata
Spac Download2011. 3. 7. 16:04
Spac 프레임워크를 이용한 홈페이지 소스를 공개합니다.
일반 기업용 홈페이지에 사용할 수 있도록 기본 몇개의 페이지와 고객 게시판으로 구성되어 있습니다.
이 소스는  Spac 프레임워크 내에서만 구동됩니다.


디자인을 제외한 php프로그램, 기본 HTML, CSS, Javascript 파일로 이루어져 있습니다.
디자인을 입혀 홈페이지 제작에 사용해도 무방합니다.

이 소스는 누구나 자유롭게 사용하실 수 있습니다.


[소스다운로드받기]
Posted by webdata
Spac Download2010. 12. 7. 21:45

새버전이 나왔습니다.
새버전 링크 : http://spac.tistory.com/144

-----------------------------------------

Spac v.10.12.1 버전을 공개합니다.
변경된 내용은 아래와 같으며, 문의사항은 이메일이나 www.phpwork.kr 에 해주시기 바랍니다.

  1. 기본내장템플릿 태그 기능 개선
  2. 사용자클래스 자동로딩 기능 추가
  3. 기타 소스파일 코드정리
  4. 이전 버전 사용자는Controller.Class.php, ActionClass.Class.php, ViewTemplate.Class.php 파일을 덮어 써 주시고 "Controller.ini" 파일내의 [load_user_class] 항목을 추가시켜줍니다.
    또한 Spac/controller 경로에 AutoLoadUserClass.ini 파일을 추가해줍니다.
  5. 이 버전은 이전버전에서 업데이트 해도 사용자의 프로그램에 영향을 주지 않습니다.
Posted by webdata