php와 엑셀 연동관련 질문입니다..
조회수 2937 답변수 2 반응수 4 등록일 2016.08.19 23:07:04

php파일에서 원래 있는 엑셀 파일에 데이터를 저장하려면 어떻게 해야하나요? 새로운 엑셀파일을 만드는 것이 아닌 원래 있던 엑셀파일을 열어서 엑셀의 새로운 줄에 데이터를 저장하고 싶은데 어떻게 해야하는지 궁금합니다.


PHP에서 엑셀과 관련한 여러가지 라이브러리가 있지만 

그 중 제일 많이 사용중이고 안정적인 PHPExcel 라이브러리를 사용하면 쉽게 구현하실 수 있습니다.


PHPExcel의 최신 버전은 아래 git 저장소에서 다운로드 받을 수 있습니다.

https://github.com/PHPOffice/PHPExcel


아래는 엑셀을 읽어 특정 셀의 데이터를 가져오거나, 특정 셀에 데이터를 입력하여 새로운 파일로 저장하는 간단한 코드입니다. 

아래 코드 참조해 주세요~

  1. <?
  2.  require_once "PHPExcel-1.8/Classes/PHPExcel.php";
  3.  
  4.  $objPHPExcel = PHPExcel_IOFactory::createReader('Excel2007');
  5.  
  6.  #dolgo.xlsx 엑셀 로드
  7.  $objPHPExcel = $objPHPExcel->load('dolgo.xlsx');
  8.  #dolgo.xlsx의 E2셀에 위치한 데이터 가져오기
  9.  $objPHPExcel->getActiveSheet()->getCell('E2')->getValue();
  10.  
  11.  
  12.  $objPHPExcel->setActiveSheetIndex(0);
  13.  
  14.  #E4셀에 four 값 입력하기
  15.  $objPHPExcel->getActiveSheet()->setCellValue('E4', 'four');
  16.  
  17.  #새로운 dolgo2.xlsx 파일에 저장하기
  18.  $objExcelWrite = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  19.  $objExcelWrite->save('dolgo2.xlsx');
  20.  ?>


2016.08.20 02:10:17 반응 이력
php 모듈 중 zip 모듈이 활성화가 안된 경우 발생하는 에러입니다. phpinfo()로 확인하시면 zip 모듈에 대한 활성화 여부를 확인해 보시고 비활성화인 경우 php를 다시 재컴파일 하거나 zip 모듈만 따로 설치하는 경우로 해결 할 수 있습니다. 조민우 2016.08.20 15:31:39
이 방식대로 했을 때 Class 'ZipArchive' not found 오류가 떠서 구글을 뒤져봤는데도 어떻게 하는지 잘 모르겠네요.. 혹시 어떻게 해결하는지 설명해 주실수 있으신가요? 표연학 2016.08.20 15:04:00
감사합니다! 표연학 2016.08.20 08:31:11

자동으로 다음 셀에 저장되게 하는 방법은 없을까요..? 

2016.08.20 08:25:05 반응 이력
잘 해결하셨다니 다행이네요! 답변 내용 중 우측 상단 채택 버튼으로 채택 하실 수도 있어요! 답변으로 인해 문제를 해결하셨다면 잊지말고 꼭 채택해 주세요^^ 감사합니다. 또 뵐게요~ 조민우 2016.08.29 22:52:15
잘 해결 되었습니다. 정말 감사합니다. 다음에 다른 질문이 있을 때 또 질문하러 오겠습니다. 표연학 2016.08.29 22:33:26
표연학님 ZipArchive 에러 잘 해결되신건가요?? 혼자서 고민중이시라면 질문 올려주세요! 조민우 2016.08.29 21:44:07
PHPExcel의 getHighestRow() 메소드로 엑셀의 마지막 row에 대한 index를 가져 올 수 있습니다. $lastRow = $objPHPExcel-&gt;setActiveSheetIndex(0)-&gt;getHighestRow(); $objPHPExcel-&gt;getActiveSheet()-&gt;setCellValue('E'.($lastRow+1), 'four'); 조민우 2016.08.20 15:25:04

답변 작성

질문에 적합한 답변을 상세히 작성해 주시기 바랍니다.

답변이 찬성되면 태그평판 +2점이 적립, 반대되면 태그평판 -1점 차감됩니다.

답변이 채택되면 태그평판 +10점이 적립됩니다.