- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>무제 문서</title>
- </head>
- <body>
- <?php
- require_once "Comn/reader.php";
- $data = new Spreadsheet_Excel_Reader();
- $data->setOutputEncoding("UTF-8//IGNORE");
- $data->read("sample_excel.xls");
- 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}') ";
- }
- echo $my_phone;
- ?>
- </body>
- </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");
$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);
}
$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 한것이고,
모든 작업이 끝나면 '반드시' DB를 클로즈 해주어야 한다.
Comm/reader.php 는 아래 사이트에서 다운 받자.
http://shonm.tistory.com/attachment/cfile26.uf@2067D03E4D4FABA426F0DB.zip
출처 : http://blog.naver.com/87kks/40187215290