엑셀 파일을 읽어와서 MYSQL DB 에 넣는 것 까지의 코드이다.
1. 엑셀 파일 내용
2. 엑셀 읽는 php
Excel.php
<?php
// Test CVS
require_once 'Comn/reader.php';
include_once '../include/mysql.php';
include_once '../include/error.php';
// ExcelFile($filename, $encoding);
//Comn 폴더의 파일 2개가 필요하다 OLERead.inc,reader.php
//해당 파일은 첨부함(압축 파일을 풀면 나올 것이고
//그 파일들을 불러오는건 require_once 'Comn/reader.php'; 부분이다.
$data = new Spreadsheet_Excel_Reader();
// Set output Encoding.
$data->setOutputEncoding('euc-kr');
//first row remove
//$data->setRowColOffset(0);
/***
* if you want you can change 'iconv' to mb_convert_encoding:
* $data->setUTFEncoder('mb');
*
**/
/***
* By default rows & cols indeces start with 1
* For change initial index use:
* $data->setRowColOffset(0);
*
**/
/***
* Some function for formatting output.
* $data->setDefaultFormat('%.2f');
* setDefaultFormat - set format for columns with unknown formatting
*
* $data->setColumnFormat(4, '%.3f');
* setColumnFormat - set format for column (apply only to number fields)
*
**/
$data->read('1.xls');
/*
$data->sheets[0]['numRows'] - count rows
$data->sheets[0]['numCols'] - count columns
$data->sheets[0]['cells'][$i][$j] - data from $i-row $j-column
$data->sheets[0]['cellsInfo'][$i][$j] - extended info about cell
$data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown"
if 'type' == "unknown" - use 'raw' value, because cell contain value with format '0.00';
$data->sheets[0]['cellsInfo'][$i][$j]['raw'] = value if cell without format
$data->sheets[0]['cellsInfo'][$i][$j]['colspan']
$data->sheets[0]['cellsInfo'][$i][$j]['rowspan']
*/
error_reporting(E_ALL ^ E_NOTICE);
$connect = connectLocalDB();
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//엑셀 첫 열이 데이터가 아니라 구분 이므로 0번째 index 를 건너뛰고 읽음
if($i==1){
continue;
}
$local = "";
$name = "";
$regdate= "";
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
//$query_string="insert into test(local,name,regdate) values (";
echo $data->sheets[0]['cells'][$i][$j]. ",";
if($j==1){
$local = $data->sheets[0]['cells'][$i][$j];
}else if($j==2){
$name = $data->sheets[0]['cells'][$i][$j];
}else if($j==3){
$regdate= $data->sheets[0]['cells'][$i][$j];
}
}
$query_string="insert into test(local,name,regdate) values ('".$local."','".$name."','".$regdate."')";
echo $query_string;
if(!mysql_query($query_string, $connect)){
echo $i."fail".$j;
}
echo "<br><br>";
}
//print_r($data);
//print_r($data->formatRecords);
?>
<? mysql_close($connect); ?>
1. 엑셀 파일 내용
2. 엑셀 읽는 php
Excel.php
<?php
// Test CVS
require_once 'Comn/reader.php';
include_once '../include/mysql.php';
include_once '../include/error.php';
// ExcelFile($filename, $encoding);
//Comn 폴더의 파일 2개가 필요하다 OLERead.inc,reader.php
//해당 파일은 첨부함(압축 파일을 풀면 나올 것이고
//그 파일들을 불러오는건 require_once 'Comn/reader.php'; 부분이다.
$data = new Spreadsheet_Excel_Reader();
// Set output Encoding.
$data->setOutputEncoding('euc-kr');
//first row remove
//$data->setRowColOffset(0);
/***
* if you want you can change 'iconv' to mb_convert_encoding:
* $data->setUTFEncoder('mb');
*
**/
/***
* By default rows & cols indeces start with 1
* For change initial index use:
* $data->setRowColOffset(0);
*
**/
/***
* Some function for formatting output.
* $data->setDefaultFormat('%.2f');
* setDefaultFormat - set format for columns with unknown formatting
*
* $data->setColumnFormat(4, '%.3f');
* setColumnFormat - set format for column (apply only to number fields)
*
**/
$data->read('1.xls');
/*
$data->sheets[0]['numRows'] - count rows
$data->sheets[0]['numCols'] - count columns
$data->sheets[0]['cells'][$i][$j] - data from $i-row $j-column
$data->sheets[0]['cellsInfo'][$i][$j] - extended info about cell
$data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown"
if 'type' == "unknown" - use 'raw' value, because cell contain value with format '0.00';
$data->sheets[0]['cellsInfo'][$i][$j]['raw'] = value if cell without format
$data->sheets[0]['cellsInfo'][$i][$j]['colspan']
$data->sheets[0]['cellsInfo'][$i][$j]['rowspan']
*/
error_reporting(E_ALL ^ E_NOTICE);
$connect = connectLocalDB();
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//엑셀 첫 열이 데이터가 아니라 구분 이므로 0번째 index 를 건너뛰고 읽음
if($i==1){
continue;
}
$local = "";
$name = "";
$regdate= "";
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
//$query_string="insert into test(local,name,regdate) values (";
echo $data->sheets[0]['cells'][$i][$j]. ",";
if($j==1){
$local = $data->sheets[0]['cells'][$i][$j];
}else if($j==2){
$name = $data->sheets[0]['cells'][$i][$j];
}else if($j==3){
$regdate= $data->sheets[0]['cells'][$i][$j];
}
}
$query_string="insert into test(local,name,regdate) values ('".$local."','".$name."','".$regdate."')";
echo $query_string;
if(!mysql_query($query_string, $connect)){
echo $i."fail".$j;
}
echo "<br><br>";
}
//print_r($data);
//print_r($data->formatRecords);
?>
<? mysql_close($connect); ?>
댓글