용량 큰 엑셀 파일 처리엔 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개
좋은 정보 감사합니다.~
감사합니다.
https://opensource.box.com/spout/docs/
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 4976 | 기타 | 5년 전 | 2118 | ||
| 4975 | 웹서버 |
nooree
|
5년 전 | 2762 | |
| 4974 | node.js |
younhoso
|
5년 전 | 2135 | |
| 4973 | PHP |
|
5년 전 | 3638 | |
| 4972 | 기타 |
younhoso
|
5년 전 | 2260 | |
| 4971 | JavaScript | 6년 전 | 2488 | ||
| 4970 | 웹서버 | 6년 전 | 4120 | ||
| 4969 | JavaScript |
|
6년 전 | 2783 | |
| 4968 | JavaScript |
|
6년 전 | 1932 | |
| 4967 | JavaScript |
younhoso
|
6년 전 | 2041 | |
| 4966 | JavaScript |
|
6년 전 | 2114 | |
| 4965 | PHP |
|
6년 전 | 2104 | |
| 4964 | 기타 | 6년 전 | 2919 | ||
| 4963 | JavaScript | 6년 전 | 2088 | ||
| 4962 | JavaScript | 6년 전 | 2285 | ||
| 4961 | jQuery |
아이티몬스
|
6년 전 | 2094 | |
| 4960 | PHP | 6년 전 | 2738 | ||
| 4959 | 기타 | 6년 전 | 2566 | ||
| 4958 | PHP |
아이티몬스
|
6년 전 | 4577 | |
| 4957 | 기타 | 6년 전 | 2094 | ||
| 4956 | 정규표현식 |
하늘위의길
|
6년 전 | 2321 | |
| 4955 | 정규표현식 |
하늘위의길
|
6년 전 | 2674 | |
| 4954 | 웹서버 |
하늘위의길
|
6년 전 | 4138 | |
| 4953 | PHP | 6년 전 | 2524 | ||
| 4952 | PHP |
몰라무서워
|
6년 전 | 3212 | |
| 4951 | MySQL | 6년 전 | 4129 | ||
| 4950 | jQuery | 6년 전 | 3612 | ||
| 4949 | node.js | 6년 전 | 2678 | ||
| 4948 | node.js | 6년 전 | 2402 | ||
| 4947 | node.js | 6년 전 | 2647 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기