Loading
2016. 5. 17. 09:03 - codeghost

PHP 엑셀(EXCEL) 읽어서 DB(database)에 저장하기


  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>무제 문서</title>
  5. </head>
  6. <body>
  7. <?php
  8. $conn = mysql_connect("호스트 주소""서버""비밀번호");
  9. $mysql = mysql_select_db("DB명"$conn);
  10. mysql_query("set names utf8");
  11. require_once "Comn/reader.php";
  12. $data = new Spreadsheet_Excel_Reader();
  13. $data->setOutputEncoding("UTF-8//IGNORE");
  14. $data->read("sample_excel.xls")
  15. for ($i = 2$i <= $data->sheets[0]["numRows"]$i++) {
  16. $my_name = $data->sheets[0]["cells"][$i][1];
  17. $my_age = $data->sheets[0]["cells"][$i][2];
  18. $my_gender = $data->sheets[0]["cells"][$i][3];
  19. $my_phone = $data->sheets[0]["cells"][$i][4];
  20. $query = "insert into my_user (my_name,my_age,my_gender,my_phone) values ('{$my_name}','{$my_age}','{$my_gender}','{$my_phone}') ";
  21. $result = mysql_query($query$conn);
  22. }
  23. echo $my_name."<br>";
  24. echo $my_age."<br>";
  25. echo $my_gender."<br>";
  26. echo $my_phone;
  27. mysql_close($conn);
  28. ?>
  29. </body>
  30. </html>

 

전체적인 소스는 위와 동일하다 . 그럼 하나하나 뜯어 보도록 하자.

 

 

1. DB 연동 .. 

$conn = mysql_connect("""""");
$mysql = mysql_select_db(""$conn);
mysql_query("set names utf8");     

 
2.PHP 라이브러리 로드.
require_once "Comn/reader.php";
 
3.라이브러리에 정의 되어 있는 객체 함수를 이용한 초기 셋팅.
 
$data = new Spreadsheet_Excel_Reader();

$data->setOutputEncoding("UTF-8//IGNORE");

$data->read("sample_excel.xls");    
 
부연 설명을 하자면 반드시 OUTPUTENcoding이  read보다 앞서 나와야 한다.
그리고 read에 정의된  엑셀 파일은 반드시 서버에  올려져 있어야  한다.
 
4. DB에 자료 저장하기
 
 for ($i = 2$i <= $data->sheets[0]["numRows"]$i++) {

$my_name = $data->sheets[0]["cells"][$i][1];

$my_age = $data->sheets[0]["cells"][$i][2];

$my_gender = $data->sheets[0]["cells"][$i][3];

$my_phone = $data->sheets[0]["cells"][$i][4];

$query = "insert into my_user (my_name,my_age,my_gender,my_phone) values ('{$my_name}','{$my_age}','{$my_gender}','{$my_phone}') ";

$result = mysql_query($query$conn);
}
 
 
$data->sheets[0]["numRows"]; 는 엑셀 시트의 행의 갯수를 반환해 준다.
 
같이 첨부 해  놓은 엑셀을 보면 알겠지만, 내가 샘플로 만들어 놓은 엑셀은 3행 4열이다.
 
for ($i = 2;   .. 에서 왜 $i가 2로 시작을 했냐면,
 
1로 시작을 하면 이름 나이 성별 폰번호 ..  라는 소분류 글자까지 읽어버리기  때문이다.
(무슨 말인지 모르면  첨부된 엑셀  open open)
 
그래서 2부터 시작하여, 맨 첫번째 줄을 제외하고 DB에 저장시키는 것이다.
 
 
그  밑에  
 
echo $my_name."<br>";
echo $my_age."<br>";
echo $my_gender."<br>";
echo $my_phone;

mysql_close($conn);
 
는 값이 제대로 할당 되는지 찍어보려고 echo 한것이고,
 
모든 작업이 끝나면 '반드시' DB를 클로즈 해주어야 한다.

 

Comm/reader.php 는 아래 사이트에서 다운 받자.

http://shonm.tistory.com/attachment/cfile26.uf@2067D03E4D4FABA426F0DB.zip



출처 : http://blog.naver.com/87kks/40187215290