편리

용량 큰 엑셀 파일 처리엔 Spout

최근에 파일 용량이 큰 엑셀 파일을 읽어서 DB에 데이터를 기록하는 걸 개발했는데

용량이 크니까 PHPExcel 에서는 처리가 되지 않고 오류를...

 

그래서 찾아낸 Spout : https://github.com/box/spout

 

개발환경이 PHP 5.6.x 라서 이 버전에 사용할 수 있는 2.7.3 버전을 사용했습니다.

설치는 컴포저로 했으며 만약 컴포저 사용이 어려울 때는 아래의 require 코드를 추가해줍니다.

 

버전 3.x 에서는 class 명 등이 변경됐으니 그에 맞게 사용하면 됩니다.

 

[code]

require_once '[PATH/TO]/src/Spout/Autoloader/autoload.php';

[/code]

 

[code]

<?php
ini_set('memory_limit', '-1');
ini_set('max_execution_time', '0');

 

$file = __DIR__.'/patent.xlsx';

 

use Box\Spout\Reader\ReaderFactory;
use Box\Spout\Common\Type;

 

$reader = ReaderFactory::create(Type::XLSX);

$reader->open($file);

 

foreach ($reader->getSheetIterator() as $sheet) {
    //if ($sheet->getIndex() > 0)
    //    break;
    foreach ($sheet->getRowIterator() as $row) {
        print_r($row);
    }
}

 

$reader->close();

[/code]

 

실제 사용해본 경험으로는 11MB 정도의 엑셀 파일을 읽고 데이터를 입력하는데 10초 정도

소요되는 듯 했습니다. 물론 이 시간은 서버 환경 등에 따라 달라질 수 있습니다.

|

댓글 13개

오... 엑셀 용량은 항상 걸림돌이었는데요...
좋은 정보 감사합니다.~
맞습니다. 용량이 문제가 될 때가 많았죠!
좋은정보 감사합니다!
좋은? 정보일지는..
감사합니다.
혹시 db를 엑셀로 만드는것도 가능 한가요?
댓글을 작성하시려면 로그인이 필요합니다.

개발자팁

5,403건

개발과 관련된 유용한 정보를 공유하세요. 질문은 QA에서 해주시기 바랍니다.

+
분류 제목 글쓴이 날짜 조회
MySQL 21-04-20 조회 2,542
기타 21-04-18 조회 3,421
MySQL 21-04-17 조회 2,724
MySQL 21-04-16 조회 2,409
MySQL 21-04-15 조회 2,225
MySQL 21-04-15 조회 2,024
OS 21-03-31 조회 5,339
웹서버 21-03-24 조회 2,890
웹서버 21-03-18 조회 2,898
웹서버 21-03-11 조회 3,129
웹서버 21-03-08 조회 2,433
웹서버 21-03-02 조회 2,887
웹서버 21-03-02 조회 3,263
MySQL 21-02-25 조회 3,689
웹서버 21-02-17 조회 8,185
웹서버 21-02-13 조회 2,287
OS 21-01-20 조회 7,470
PHP 21-01-12 조회 5,400
JavaScript 21-01-12 조회 3,042
MySQL 20-11-27 조회 4,559
MySQL 20-11-25 조회 3,748
PHP 20-11-24 조회 3,009
PHP 20-11-23 조회 3,993
PHP 20-11-19 조회 5,072
PHP 20-11-13 조회 5,319
웹서버 20-09-26 조회 7,972
기타 20-08-07 조회 5,881
MySQL 20-08-05 조회 3,950
기타 20-07-15 조회 2,998
기타 20-07-14 조회 3,593