跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

ExcelFileParser处理excel获得数据 可作批量导入到数据库

excel fileparser处理excel获得数据 可作批量导入到数据库提交表单Excel数据获取演示Excel数据获取演示提交处理[php]php

* 文件名:* 摘  要:** @author 星期八 ixqbar@hotmail.com* @version*/ class IndexAction extends Action{/*** 构造函数*/ public function __construct(){parent::__construct();}/*** 默认索引页*/ public function index(){$this->display();}/*** 提交处理*/ 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);}}?>[/php]处理类[php]php

* 文件名:excel数据获取* 摘  要:** @author 星期八 ixqbar@hotmail.com* @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为ThinkPHP自带导入类方法*/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_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{$charcode = ord($str[$i*2])+256*ord($str[$i*2+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_excel['sheet_number'];$i++){/*** 对行循环*/ for($j=0;$j_excel['row_number'][$i];$j++){/*** 对列循环*/ for($k=0;$k_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;}}?>

相关文章