ExcelFileParser处理excel获得数据 可作批量导入到数据库
提交表单
提交处理
[php]
/**
* CopyRight (c) 2009,
* All rights reserved.
* 文件名:
* 摘 要:
*
* @author 星期八 ixqbar@hotmail.com
* @version
*/
class IndexAction 扩展 Action
{
/**
* 构造函数
*/
public function __construct()
{
parent::__construct();
}
/**
* 默认索引页
*/
公共函数索引()
{
$this->display();
}
/**
* 提交处理
*/
公共函数 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]
/**
* CopyRight (c) 2009,
* All rights reserved.
* 文件名:excel数据获取
* 摘 要:
*
* @author 星期八 ixqbar@hotmail.com
* @version 0.1
*/
class ExcelParser
{
private $_data=array(0,' ');
private $_excel_handle;
private $_excel=array();
/**
* 构造函数
* @param
*/
public function __construct($filename)
{
/ **
* 引入excelparser类
* 普通方法为
* requires 路径.'excelparser.php';
* import为ThinkPHP自带导入类方法
*/
import('@.Util.PHPExcelParser.excelparser','','.php');
$this->_excel_handle=new ExcelFileParser();
/ /错误获取
$this->checkErrors($filename);
}
/**
* 错误校验
*/
私有函数 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)
{
案例 0:
// 无错误不处理
中断;
案例 1:
$this->_data=array (1、'文件读取错误(Linux注意读写权限)');
中断;
情况 2:
$this->_data=array(1,'文件太小');
中断;
案例 3:
$ this-> _data = array(1,'读取excel表头失败');
break;
案例4:
break;
case 5:
$this->_data=array(1,'文件可能为空');
break;
案例 6:
$this->_data=array(1,'文件不完整');
break;
case 7:
$this->_data=array(1,'读取数据错误') ;
中断;
情况 8:
$this->_data=array(1,'版本错误');
中断;
}
未设置($error_code);
}
/**
* Excel信息获取
*/
私有函数 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->工作表['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
*/
私有函数 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数据获取
*/
私有函数 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
*/
public function main()
{
//Excel信息获取
$this->getExcelInfo();
//Excel数据获取
$this->getExcelData();
return $this->_data;
}
}
?>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

WebStorm Mac版
好用的JavaScript开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能