Skip to content

CHICPRO

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

PHP-ExcelReader를 이용하여 엑셀 데이터를 DB에 입력하기

2013-10-06 by 편리

쇼핑몰 작업을 하다보면 엑셀에 대한 작업을 꽤 하게 된다. 엑셀파일을 이용한 상품정보 일괄등록 같은 기능이 많이 사용되는데 그런 기능을 구현하기 위해 PHP-ExcelReader 를 사용해보기로 했다. PHPExcel 이라는 뛰어난 라이브러리가 있지만 PHP 5.2 등의 요구사항을 충족시키는 것이 가능하지 않을 수도 있기 때문에 PHP-ExcelReader를 사용하기로 했다.

PHP-ExcelReader 파일 다운로드 : http://sourceforge.net/projects/phpexcelreader/files/latest/download

PHP-ExcelReader 를 사용하기 전에 수정해야할 것이 있는데 다운로드한 파일의 압축을 푼 후 reader.php 파일을 열어 31라인 부근의 아래 코드를 수정해야한다.

require_once 'Spreadsheet/Excel/Reader/OLERead.php';

위 코드를 아래와 같이 수정한다.

require_once 'oleread.inc';

파일의 경로가 잘못 지정되어 있는데 내가 다운로드한 파일에서만 이런 현상이 생겼는지도 모르겠다. 실행했을 때 경로 문제로 오류가 발생하면 경로를 수정해야할 것이다.

아래는 간단한 예제코드이다. 아래 테이블처럼 데이터가 엑셀 파일에 있을 때 이 데이트를 DB에 저장하는 것이다.

fld1fld2fld3
100200300
110210310
120220320
<?php
$file = 'excel.xls';

include_once('reader.php');

$data = new Spreadsheet_Excel_Reader();

// Set output Encoding.
$data->setOutputEncoding('UTF-8');

/***
* if you want you can change 'iconv' to mb_convert_encoding:
* $data->setUTFEncoder('mb');
*
**/

/***
* By default rows & cols indeces start with 1
* For change initial index use:
* $data->setRowColOffset(0);
*
**/

/***
*  Some function for formatting output.
* $data->setDefaultFormat('%.2f');
* setDefaultFormat - set format for columns with unknown formatting
*
* $data->setColumnFormat(4, '%.3f');
* setColumnFormat - set format for column (apply only to number fields)
*
**/

$data->read($file);

/*

 $data->sheets[0]['numRows'] - count rows
 $data->sheets[0]['numCols'] - count columns
 $data->sheets[0]['cells'][$i][$j] - data from $i-row $j-column

 $data->sheets[0]['cellsInfo'][$i][$j] - extended info about cell

    $data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown"
        if 'type' == "unknown" - use 'raw' value, because  cell contain value with format '0.00';
    $data->sheets[0]['cellsInfo'][$i][$j]['raw'] = value if cell without format
    $data->sheets[0]['cellsInfo'][$i][$j]['colspan']
    $data->sheets[0]['cellsInfo'][$i][$j]['rowspan']
*/

error_reporting(E_ALL ^ E_NOTICE);

$comma = '';
$sql = " INSERT INTO `table`
            ( fld1, fld2, fld3 )
          VALUES ";

for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
    $fld1 = addslashes($data->sheets[0]['cells'][$i][1]);
    $fld2 = addslashes($data->sheets[0]['cells'][$i][2]);
    $fld3 = addslashes($data->sheets[0]['cells'][$i][3]);

    $sql .= $comma." ( '$fld1', '$fld2', '$fld3' ) ";
    $comma = ' , ';
}

mysql_query($sql);
?>

위 코드에서 $i의 초기값을 2라고 지정한 것은 엑셀파일에서 fld1, fld2, fld3 라는 값은 저장하지 않기 위해서이다. 그리고 $data->setOutputEncoding(‘UTF-8’); 부분에서 캐릭터셋을 지정할 수 있는데 나의 경우는 DB에 저장될 캐릭터셋이 utf-8 이기 때문에 UTF-8로 지정했다.

Post navigation

Previous Post:

집에 와서도 PC앞

Next Post:

이발

2 Commments

  1. 영쌤 says:
    2018-10-29 at 22:27

    좋은 자료 공유해주셔서 감사합니다.
    덕분에 수월하게 해결했네요 ~ ^^

    Reply
    1. 편리 says:
      2018-11-01 at 10:02

      댓글 남겨주셔서 감사합니다. 좋은 하루 되세요.

      Reply

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