http : / / ncube . net / 9270 쇼핑몰 작업 을 하 다 보 면 엑셀 에 대한 작업 을 꽤 하 게 된다 . 엑 셀 파일 을 이용 한 상품 정보 일괄 등록 같 은 기능 이 많이 사용 되 는데 그런 기능 을 구현 하 기 위해 PHP - ExcelReader 를 사용 해 보 기 로 했 다 . PHPExcel 이 라는 뛰어난 라이브러리 가 있 지만 PHP 5 . 2 등 의 요구 사항 을 충족 시키 는 것 이 가능 하 지 않 을 수 도 있 기 때문 에 PHP - ExcelReader 를 사용 하 기 로 했 다 . PHP - ExcelReader 파일 다운로드 : http : / / sourceforge . net / projects / phpexcelreader / files / latest / download PHP - ExcelReader 를 사용 하 기 전 에 수정 해야 할 것 이 있 는데 다운로드 한 파일 의 압축 을 푼 후 reader . php 파일 을 열 어 31 라인 부근 의 아래 코드 를 수정 해야 한다 . 1 require _ once ' Spreadsheet / Excel / Reader / OLERead . php '; 위 코드 를 아래 와 같이 수정 한다 . 1 require _ once ' oleread . inc '; 파일 의 경로 가 잘못 지정 되 어 있 는데 내 가 다운로드 한 파일 에서 만 이런 현상 이 생겼 는지 도 모르 겠 다 . 실행 했 을 때 경로 문제 로 오류 가 발생 하 면 경로 를 수정 해야 할 것 이 다 . 아래 는 간단 한 예제 코드 이 다 . 아래 테이블 처럼 데이터 가 엑셀 파일 에 있 을 때 이 데이트 를 DB 에 저장 하 는 것 이 다 . fld 1 fld 2 fld 3 100 200 300 110 210 310 120 220 320 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 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 ( '%. 2 f '); * setDefaultFormat - set format for columns with unknown formatting * * $ data -> setColumnFormat ( 4 , '%. 3 f '); * 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 ` ( fld 1 , fld 2 , fld 3 ) VALUES "; for ( $ i = 2 ; $ i sheets [ 0 ] [ ' numRows ']; $ i ++) { $ fld 1 = addslashes ( $ data -> sheets [ 0 ] [ ' cells '][$ i ] [ 1 ] ) ; $ fld 2 = addslashes ( $ data -> sheets [ 0 ] [ ' cells '][$ i ] [ 2 ] ) ; $ fld 3 = addslashes ( $ data -> sheets [ 0 ] [ ' cells '][$ i ] [ 3 ] ) ; $ sql . = $ comma . " ( '$ fld 1 ', '$ fld 2 ', '$ fld 3 ' ) "; $ comma = ' , '; } mysql _ query ( $ sql ) ; ? > 위 코드 에서 $ i 의 초기 값 을 2 라고 지정 한 것 은 엑셀 파일 에서 fld 1 , fld 2 , fld 3 라는 값 은 저장 하 지 않 기 위해서 이 다 . 그리고 $ data -> setOutputEncoding ( ' UTF - 8 '); 부분 에서 캐릭터 셋 을 지정 할 수 있 는데 나 의 경우 는 DB 에 저장 될 캐릭터 셋 이 utf - 8 이 기 때문 에 UTF - 8 로 지정 했 다 . 공유 하 기 글 요소