용량 큰 엑셀 파일 처리엔 Spout 정보
PHP 용량 큰 엑셀 파일 처리엔 Spout관련링크
https://github.com/box/spout
2849회 연결
본문
최근에 파일 용량이 큰 엑셀 파일을 읽어서 DB에 데이터를 기록하는 걸 개발했는데
용량이 크니까 PHPExcel 에서는 처리가 되지 않고 오류를...
그래서 찾아낸 Spout : https://github.com/box/spout
개발환경이 PHP 5.6.x 라서 이 버전에 사용할 수 있는 2.7.3 버전을 사용했습니다.
설치는 컴포저로 했으며 만약 컴포저 사용이 어려울 때는 아래의 require 코드를 추가해줍니다.
버전 3.x 에서는 class 명 등이 변경됐으니 그에 맞게 사용하면 됩니다.
require_once '[PATH/TO]/src/Spout/Autoloader/autoload.php';
<?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();
실제 사용해본 경험으로는 11MB 정도의 엑셀 파일을 읽고 데이터를 입력하는데 10초 정도
소요되는 듯 했습니다. 물론 이 시간은 서버 환경 등에 따라 달라질 수 있습니다.
!-->!-->
추천
12
12
댓글 13개
오... 엑셀 용량은 항상 걸림돌이었는데요...
좋은 정보 감사합니다.~
좋은 정보 감사합니다.~
맞습니다. 용량이 문제가 될 때가 많았죠!
감사합니다.
감사합니다.
감사합니다!
감사합니다!
좋은정보 감사합니다!
좋은? 정보일지는..
감사합니다.
감사합니다.
편리님 짱!!
감사합니다!!
감사합니다.
혹시 db를 엑셀로 만드는것도 가능 한가요?
문서에는 가능한 걸로 보입니다.
https://opensource.box.com/spout/docs/
https://opensource.box.com/spout/docs/