Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

php_writeexcel 이용 xls 파일 생성

2013-10-06 by 편리

php를 이용해 xls 파일을 생성할 때는 PHPExcel를 이용하는 게 편하다. 그런데 PHPExcel은 최소 php 5.2이상이어야 사용할 수 있는데(사이트를 방문해보니 PHPExcel 2.0부터는 php 5.3) 배포형 솔루션에 PHPExcel을 탑재하는 것은 쉬운 일은 아니다. 그래서 다른 라이브러리를 찾게 되었는데 여러 가지 중 php_writeexcel을 선택하게 됐다. 오래전에 배포된 버전이라 최신 버전에 맞지 않을 것 같아서 고려하지 않았던 라이브러리인데 xml 형태로 xls 파일을 만들어주는 라이브러리를 사용해보니 엑셀에서 열 때 파일형식이 다르다는 경고가 나와서 php_writeexcel을 선택하게 됐다.

php_writeexcel 사이트 : http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/

위 사이트에서 다운로드한 파일을 압축해제 후 웹서버에 업로드 하고 예제 페이지를 참고해 코드를 작성하면 된다. 아래는 이번에 작업하면서 작성한 코드로 주문정보를 xls 파일로 저장한다.

/*================================================================================
php_writeexcel http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/
=================================================================================*/

include_once('./lib/php_writeexcel/class.writeexcel_workbook.inc.php');
include_once('./lib/php_writeexcel/class.writeexcel_worksheet.inc.php');

$fname = tempnam("/tmp", "tmp-orderlist.xls");
$workbook = new writeexcel_workbook($fname);
$worksheet = $workbook->addworksheet();

// Put Excel data
$data = array('우편번호', '주소', '이름', '전화1', '전화2', '상품명', '수량', '선택사항', '배송비', '상품코드', '주문번호', '운송장번호', '전하실말씀');
$data = array_map('iconv_euckr', $data);

<?php
$col = 0;
foreach($data as $cell) {
    $worksheet->write(0, $col++, $cell);
}

for($i=1; $row=mysql_fetch_array($result); $i++) {
    $sendcost = iconv_euckr(($row['sendcost'] ? '착불' : '선불'));
    $row = array_map('iconv_euckr', $row);

    $worksheet->write($i, 0, $row['zip1'].'-'.$row['zip2']);
    $worksheet->write($i, 1, $row['addr1'].' '.$row['addr2']);
    $worksheet->write($i, 2, $row['name']);
    $worksheet->write($i, 3, $row['tel']);
    $worksheet->write($i, 4, $row['hp']);
    $worksheet->write($i, 5, $row['item']);
    $worksheet->write($i, 6, $row['qty']);
    $worksheet->write($i, 7, $row['option']);
    $worksheet->write($i, 8, $sendcost);
    $worksheet->write($i, 9, $row['item_id']);
    $worksheet->write($i, 10, $row['order_id']);
    $worksheet->write($i, 11, $row['invoice']);
    $worksheet->write($i, 12, $row['memo']);
}

$workbook->close();

header("Content-Type: application/x-msexcel; name="orderlist-".date("ymd", time()).".xls"");
header("Content-Disposition: inline; filename="orderlist-".date("ymd", time()).".xls"");
$fh=fopen($fname, "rb");
fpassthru($fh);
unlink($fname);

exit;
?>

위 코드에서는 DB의 문자셋이 utf-8이기 때문에 utf-8 문자를 euc-kr로 변환해주는 iconv_euckr 함수를 사용했다. 이 함수의 코드는 아래와 같다.

function iconv_euckr($str)
{
    return iconv('utf-8', 'euc-kr', $str);
}

배열에 저장된 값에 문자변환 함수를 적용하기 위해 array_map 함수를 사용했다. 그리고 코드에는 DB에서 자료를 가져오는 코드는 빠져있다. 이 부분은 직접 작성해야 하며 위 코드를 참고해서 자신의 환경에 맞는 코드로 수정해서 사용하면 된다.

그리고 한가지 주의할 것이 있는데 이 코드를 테스트할 때 php 5.3에서 진행했는데 php_writeexcel 사이트에서 받은 라이브러리를 그대로 사용하게 되면 에러가 발생한다. 에러 내용을 보고 코드를 수정해도 되고 아래 첨부된 class 파일을 사용해도 된다. 모든 코드를 완벽하게 수정한 것은 아니고 에러가 나오지 않도록 수정한 정도이기 때문에 만약 에러가 발생한다면 직접 수정해서 사요하는 게 좋을 것 같다.

class 파일 다운로드 : php_writeexcel

참고 : http://stackoverflow.com/questions/3930975/alternative-for-php-excel

Post navigation

Previous Post:

다시 인터넷이 안됨

Next Post:

인터넷 고장 수리

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅
  • 우분투 시스템 터미널쉘 zsh 로 변경

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes