제목 | CI EXCEL 만들기 ( XML ) 방식 - (대용량?) | ||
---|---|---|---|
글쓴이 | 주스 | 작성시각 | 2017/02/03 11:24:00 |
|
|||
이번에 엑셀 업 다운로드 기능 만들면서 여기에 없는 내용 같아 적어 둡니다. 해당 내용은 엑셀 다운로드 내용만 적었으며 read 부분은 PHPExcel 하고 excel_reader2 두가지 별도 처리 했습니다. 일단 PHP에서 엑셀 업다운로드는 PHPExcel 이라는 라이브러리 사용을 하는데요 2천줄만 넘어도 5~10초 정도 걸리고 셀 속성을 추가 하면 더 느려지더군요 그 속도에 반해서 버렸습니다.... (애도) 1번 개선 방식 - pear ( spreadsheet 패키지 ) 테스트 결과 - 로컬에서 해보니 속도가 생각보다 느린듯(5~10초 소요)??? 물론 PHPExcel 보다는 훨씬 빠릅니다. 사족 : pear 패키지 관리가 안되고 로컬서버 개발서버 상용서버 버전 맞추고 환경잡기 피곤해서 마음이 안감;;
2번 개선 방식 - Excel XML 양식으로 생성 테스트 결과 - 가장 만족스러운 속도 1만건 정도 3~5초 걸리는듯
그래서 XML 형식으로 만들기로 했습니다. application/third_party/ 아래 첨부 파일 ExcelWriterXML 를 놓고 ( 구글에서 줏어다가 약간 수정 했습니다 ) libraries 아래 Excelxml.php 라는 파일을 만들고 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); require_once APPPATH."/third_party/ExcelWriterXML/ExcelWriterXML.php"; class Excelxml extends ExcelWriterXML { public function __construct() { parent::__construct(); } } 로드만 해오도록 해주고. 컨트롤러에서 public function dnExcelXml() { set_time_limit(0); ini_set('memory_limit','-1'); $this->load->library('excelxml'); $this->excelxml->docAuthor('Yang'); $sheet = $this->excelxml->addSheet('sheet1'); $format = $this->excelxml->addStyle('StyleHeader'); $format->fontSize(12); $format->fontBold(); $format->bgColor('#333333'); $format->fontColor('#FFFFFF'); $format->alignHorizontal('Center'); $format->alignVertical('Center'); $format->border(); $sheet->writeString(1,1,'번호1','StyleHeader'); $sheet->writeString(1,2,'번호2','StyleHeader'); $sheet->writeString(1,3,'번호3','StyleHeader'); $sheet->writeString(1,4,'번호4','StyleHeader'); $sheet->writeString(1,5,'번호5','StyleHeader'); $filename = 'test.xls'; $this->excelxml->sendHeaders($filename); $this->excelxml->writeData(); }
요런식으로 사용하면 됩니다. 필요한 API 는 "ExcelWriterXML_Sheet.php" 파일 상단에 주석으로 되어 있어요~ 도움되는 내용 이었으면 좋겠네요 ㅎㅎ
|
|||
첨부파일 |
ExcelWriterXML.zip (16.5 KB) |
||
다음글 | Nginx + Socket.io 설정 (1) | ||
이전글 | Codeigniter와 Mailgun 쉽..게? 연동하... (1) | ||
kaido
/
2017/02/03 11:25:36 /
추천
0
오. 좋은정보 감사합니다. 한번 실험해봐야겠네요.
|
한대승(불의회상)
/
2017/02/03 11:32:53 /
추천
0
항상 csv나 html로 만들어서 배포 했는데 테스트 진행해봐야 겠습니다. ^^ 좋은 정보 감사 합니다. |
수호아빵
/
2017/02/07 06:04:41 /
추천
0
많은 도움이 되었습니다. 감사합니다.
|
양승현
/
2017/02/10 12:54:02 /
추천
0
데이터가 많을경우 속도 문제가 뒤따르기 마련인데.. 매우 좋은팁 이네요. 감사합니다. |
TOPdeveloper
/
2018/03/16 15:21:25 /
추천
0
좋은 정보 감사합니다, 그런데 위에 예제를 그대로 해봤는데 다운 받아지는 파일의 확장자는 xml로 됩니다, 열리는 건 정상적으로 열리는데 다른이름으로 저장했을 경우 xml로 나오죠. 이걸 질문 드리는 이유는 다운받은 파일을 다시 업로드하는 기능을 구현하려는 문제 때문입니다. |
주스
/
2018/07/06 17:50:05 /
추천
0
TO. TOPdeveloper test.xls 로 파일명을 정했기 때문에 당연히 엑셀 파일(xls)로 다운됩니다. 라이브러리 파일을 보면 파일명이 지정되지 않을경우 xml 로 만들어졌던 걸로 기억합니다. 어떤 이유인지 모르겠지만 파일명 지정이 안된듯 한데요 직접 해결하셔야 할 듯 합니다. ㅎㅎ |