电脑安全

您当前的位置:主页 > 电脑安全 >

ExcelFileParser导入excel数据-网络编程

来源:[db:来源]标题:   文件    编辑:电脑技术全能网 时间:2019-09-19 06:22

原标题:ExcelFileParser导入excel数据-网络编程
   从前本人也写过一个简略的excel停止数据导入到mysql数据库,这款是一个网友公布的,感到不错。 <?php/*** CopyRight (c) 2009,* All rights reserved.* 文件名:excel数据猎取* 摘 要:** @author 礼拜八 [email=ixqbar@hotmail.com]ixqbar@hotmail.com[/email]* @version 0.1*/class ExcelParser{ private $_data=array(0,''); private $_excel_handle; private $_excel=array(); /** * 结构函数 * @param <string> $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<$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 <string> */ private function uc2html($str) { $ret = ''; for( $i=0; $i<strlen($str)/2; $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<$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> array(标识符,内容s) */ public function main() { //Excel信息猎取 $this->getExcelInfo(); //Excel数据猎取 $this->getExcelData(); return $this->_data; }}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Excel数据猎取演示</title><meta name="Keywords" content="TODO" /><meta name="Description" content="TODO"/></head><body> <div> <div>Excel数据猎取演示</div> <div> <form method="POST" action="/Index/parse" enctype="multipart/form-data"> <input type="file" name="excel" value="" /> <input type="submit" name="submit" value="提交" /> </form> </div> </div></body></html><?php/*** CopyRight (c) 2009,* All rights reserved.* 文件名:* 摘 要:** @author 礼拜八 [email=ixqbar@hotmail.com]ixqbar@hotmail.com[/email]* @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); }}?>

上一篇:关于Session的问题集锦解决方案-网络编程

下一篇:没有了