PHP로 엑셀 자료 MySQL에 넣기

1 개요[ | ]

PHP로 엑셀 자료 MySQL에 넣기

엑셀에서 Ctrl+A, Ctrl+C 입력하여 전체 자료를 클립보드로 복사하고, 웹브라우저의 textarea에 Ctrl+V 입력하여 붙여넣고 [제출하기] 클릭.

2 테스트용 샘플[ | ]

1
2
3
4
A B C
emp_no dept_name emp_name
201102001 영업팀 한놈
201201002 개발팀 두시기
201102003 개발팀 석삼

3 import_excel.php[ | ]

<!DOCTYPE html>
<meta charset="utf-8" />
<?php
include 'lib_my.php';
include 'lib_arr.php';
 
$action = '';
if(isset($_POST['action']))$action = $_POST['action'];
 
//폼이 입력되었을 때 처리부분
if($action == 'form_submit') {
        $table_name = trim($_POST['table_name']);
 
        //엑셀 자료를 행으로 나누기
        $rows = explode("\n", $_POST['excel_text']);
        for($i=0; $i<count($rows);$i++) {
                //공백만 있는 줄은 완전히 비움
                if(trim($rows[$i])=='')$rows[$i] = '';
                else {
                        //열로 나누기
                        $rows[$i] = explode("\t", $rows[$i]);
                        $rows[$i] = array_map('trim', $rows[$i]); 
                }
        }
        //빈 줄 제거
        $rows = array_filter($rows);
 
        //첫줄에서 컬럼명 추출
        $colnames = $rows[0];
        array_splice($rows, 0, 1);
 
        //배열로 정리
        for($i=0;$i<count($rows);$i++) {
                $rows[$i] = array_combine($colnames, $rows[$i]);
        }
 
        //배열을 DB테이블로 삽입
        insert_rows($rows, $table_name, 'test');
        exit;
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input type="hidden" name="action" value="form_submit" />
<br/>테이블명: <select name="table_name">
<?php
$tabs = query_arr("SHOW TABLES");
foreach($tabs as $tab) {
	echo "<option value='$tab'>$tab</option>";
}
?>
</select>
<br/>내용
<br/><textarea name="excel_text" style="width:100%;height:300px;"></textarea>
<br/><input type="submit" value="제출하기" />
</form>
  • insert_rows 함수의 내용은 lib_my.php를 참조.

4 실행결과[ | ]

import_excel.php를 웹브라우저에서 열고, 테이블명은 'table1' 선택, 내용란에는 위의 엑셀 내용을 붙여넣은 후 [제출하기]를 클릭하면, 다음 내용이 출력된다.

INSERT INTO table1 (emp_no,dept_name,emp_name) VALUES ('201102001','영업팀','한놈');
INSERT INTO table1 (emp_no,dept_name,emp_name) VALUES ('201201002','개발팀','두시기');
INSERT INTO table1 (emp_no,dept_name,emp_name) VALUES ('201201003','개발팀','석삼');

이 내용을 확인한 후, 위의 PHP소스에서 insert_rows 호출부분을 다음과 같이 수정해주면 SQL문이 실제로 실행되어 DB에 자료가 입력된다.

insert_rows($rows, $table_name);

또는 SQL문들을 복사하여 phpMyAdmin에서 실행해도 된다.

5 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}