php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)

前端之家收集整理的这篇文章主要介绍了php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<div class="codetitle"><a style="CURSOR: pointer" data="25654" class="copybut" id="copybut25654" onclick="doCopy('code25654')"> 代码如下:

<div class="codebody" id="code25654">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;


Excel数据<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>演示

<Meta name="Description" content="TODO"/>



Excel数据获取演示


<form method="POST" action="/Index/parse" enctype="multipart/form-data">








<div class="codetitle"><a style="CURSOR: pointer" data="17368" class="copybut" id="copybut17368" onclick="doCopy('code17368')"> 代码如下:
<div class="codebody" id="code17368">
<?PHP
/
CopyRight (c) 2009,
All rights reserved.
文件名:
摘 要:

@author 星期八 [url=mailto:ixqbar@hotmail.com]ixqbar@hotmail.com[/url]
@version
/ public function parse()
{
/

$_FILES数组说明
array(n) {
["表单文件名称"] => array(5) {
["name"] => 提交文件名称
["type"] => 提交文件类型 Excel为"application/vnd.ms-excel"
["tmp_name"] => 临时文件名称
["error"] => 错误(0成功1文件太大超过upload_max_filesize2文件太大超过MAX_FILE3上传不完整4没有上传文件)
["size"] => 文件大小(单位:KB)
}
}
*/
$return=array(0,'');
/
判断是否提交
is_uploaded_file(文件名称)用于确定指定的文件是否使用POST方法上传,防止非法提交,通常和move_upload_file一起使用保存上传文件到指定的路径
*/
if(!isset($_FILES) || !is_uploaded_file($_FILES['excel']['tmp_name']))
{
$return=array(1,'提交不合法');
}
//处理
if(0 == $return[0])
{
import('@.Util.ExcelParser');
$excel=new ExcelParser($_FILES['excel']['tmp_name']);
$return=$excel->main();
}
//输出处理
print_r($return);
?>

<div class="codetitle"><a style="CURSOR: pointer" data="95341" class="copybut" id="copybut95341" onclick="doCopy('code95341')"> 代码如下:
<div class="codebody" id="code95341">
<?PHP
/
CopyRight (c) 2009,
All rights reserved.
文件名:excel数据获取
摘 要:

@author 星期八 [url=mailto:ixqbar@hotmail.com]ixqbar@hotmail.com[/url]
@version 0.1
/
class ExcelParser
{
private $_data=array(0,'');
private $_excel_handle;
private $_excel=array();
/

构造函数
@param $filename 上传文件临时文件名称
*/
public function __construct($filename)
{
/

引入excelparser类
普通方法
requires 路径.'excelparser.PHP';
/
import('@.Util.PHPExcelParser.excelparser','','.PHP');
$this->_excel_handle=new ExcelFileParser();
//错误获取
$this->checkErrors($filename);
}
/
错误校验
/
private function checkErrors($filename)
{
/

方法
/
$error_code=$this->_excel_handle->ParseFromFile($filename);
/
方法
$file_handle = fopen($this->_filename,'rb');
$content = fread($file_handle,filesize($this->_filename));
fclose($file_handle);
$error_code = $this->_excel->ParseFromString($content);
unset($content,$file_handle);
*/
switch($error_code)
{
case 0:
//无错误不处理
break;
case 1:
$this->_data=array(1,'文件读取错误(Linux注意读写权限)');
break;
case 2:
$this->_data=array(1,'文件太小');
break;
case 3:
$this->_data=array(1,'读取Excel表头失败');
break;
case 4:
$this->_data=array(1,'文件读取错误');
break;
case 5:
$this->_data=array(1,'文件可能为空');
break;
case 6:
$this->_data=array(1,'文件不完整');
break;
case 7:
$this->_data=array(1,'读取数据错误');
break;
case 8:
$this->_data=array(1,'版本错误');
break;
}
unset($error_code);
}
/
Excel信息获取
/
private function getExcelInfo()
{
if(1==$this->_data[0])return;
/

获得sheet数量
获得sheet单元对应的行和列
*/
$this->_excel['sheet_number']=count($this->_excel_handle->worksheet['name']);
for($i=0;$i<$this->_excel['sheet_number'];$i++)
{
/

行于列
注意:从0开始计数
*/
$row=$this->_excel_handle->worksheet['data'][$i]['max_row'];
$col=$this->_excel_handle->worksheet['data'][$i]['max_col'];
$this->_excel['row_number'][$i]=($row==NULL)?0:++$row;
$this->_excel['col_number'][$i]=($col==NULL)?0:++$col;
unset($row,$col);
}
}
/
中文处理函数
@return
/
private function uc2html($str)
{
$ret = '';
for( $i=0; $i<strlen($str)/2; $i++ )
{
$charcode = ord($str[$i
2])+256ord($str[$i2+1]);
$ret .= '&#'.$charcode.';';
}
return mb_convert_encoding($ret,'UTF-8','HTML-ENTITIES');
}
/

Excel数据获取
/
private function getExcelData()
{
if(1==$this->_data[0])return;
//修改标记
$this->_data[0]=1;
//获取数据
for($i=0;$i<$this->_excel['sheet_number'];$i++)
{
/
对行循环
/
for($j=0;$j<$this->_excel['row_number'][$i];$j++)
{
/

对列循环
/
for($k=0;$k<$this->_excel['col_number'][$i];$k++)
{
/*
array(4) {
["type"] => 类型 [0字符类型1整数2浮点数3日期]
["font"] => 字体
["data"] => 数据
...
}
/
$data=$this->_excel_handle->worksheet['data'][$i]['cell'][$j][$k];
switch($data['type'])
{
case 0:
//字符类型
if($this->_excel_handle->sst['unicode'][$data['data']])
{
//中文处理
$data['data'] = $this->uc2html($this->_excel_handle->sst['data'][$data['data']]);
}
else
{
$data['data'] = $this->_excel_handle->sst['data'][$data['data']];
}
break;
case 1:
//整数
//TODO
break;
case 2:
//浮点数
//TODO
break;
case 3:
//日期
//TODO
break;
}
$this->_data[1][$i][$j][$k]=$data['data'];
unset($data);
}
}
}
}
/*
函数
@return array(标识符,内容s)
/
public function main()
{
//Excel信息获取
$this->getExcelInfo();
//Excel数据获取
$this->getExcelData();
return $this->_data;
}
}
?>

excelexcelExcelFileParser

猜你在找的PHP相关文章