본문 바로가기
PHP/PHP 엑셀 파일 읽기

PHP 엑셀 파일 읽기

by 정윤재 2011. 2. 7.


엑셀 파일을 읽어와서 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); ?>



댓글