ThinkPHP导入excel表获取数据
2016-06-29 11:08
423 查看
首先需要到PHPExcel官网下载插件:http://phpexcel.codeplex.com/
然后我将插件存放在 ThinkPHP\Library\Vendor\Classes 中
public function testExcel($filename, $exts){
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
vendor('Classes.PHPExcel');
//创建PHPExcel对象,注意,不能少了\
$PHPExcel=new \PHPExcel();
//如果excel文件后缀名为.xls,导入这个类
if($exts == 'xls'){
vendor('Classes.PHPExcel.Reader.Excel5');
$PHPReader=new \PHPExcel_Reader_Excel5();
}else if($exts == 'xlsx'){
vendor('Classes.PHPExcel.Reader.Excel2007');
$PHPReader=new \PHPExcel_Reader_Excel2007();
}
$data=array();
$data_sum=array();
//dump($PHPReader);exit();
//载入文件
$PHPExcel=$PHPReader->load($filename);
//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
$currentSheet=$PHPExcel->getSheet(0);
//获取总列数
$allColumn=$currentSheet->getHighestColumn();
//获取总行数
$allRow=$currentSheet->getHighestRow();
//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
for($currentRow=2;$currentRow<=$allRow;$currentRow++){
//从哪列开始,A表示第一列
for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
//数据坐标
$address=$currentColumn.$currentRow;
//读取到的数据,保存到数组$arr中,$cell获取了每个单元格的内容,然后再根据需要对数据进行拼装
$cell =$currentSheet->getCell($address)->getValue();
}
$this->save_import($data_sum);
}
public function uploadFile(){
header("Content-Type:text/html;charset=utf-8");
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('xls', 'xlsx');// 设置附件上传类
$upload->savePath = '/'; // 设置附件上传目录
//dump($_FILES);exit();
// 上传文件
$info = $upload->uploadOne($_FILES['excelData']);
//dump($info);
//exit();
$filename = 'E:/tt/Uploads'.$info['savepath'].$info['savename'];
$exts = $info['ext'];
//dump($filename);exit;
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功调用导入的方法
$this->testExcel($filename, $exts);
}
}
//时间转换类
public function GetData($val){
$n = intval(($val - 25569) * 3600 * 24); //转换成1970年以来的秒数
$gregorian=gmdate('Y-m-d H:i:s', $n);//格式化时间
return $gregorian;
}
然后我将插件存放在 ThinkPHP\Library\Vendor\Classes 中
public function testExcel($filename, $exts){
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
vendor('Classes.PHPExcel');
//创建PHPExcel对象,注意,不能少了\
$PHPExcel=new \PHPExcel();
//如果excel文件后缀名为.xls,导入这个类
if($exts == 'xls'){
vendor('Classes.PHPExcel.Reader.Excel5');
$PHPReader=new \PHPExcel_Reader_Excel5();
}else if($exts == 'xlsx'){
vendor('Classes.PHPExcel.Reader.Excel2007');
$PHPReader=new \PHPExcel_Reader_Excel2007();
}
$data=array();
$data_sum=array();
//dump($PHPReader);exit();
//载入文件
$PHPExcel=$PHPReader->load($filename);
//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
$currentSheet=$PHPExcel->getSheet(0);
//获取总列数
$allColumn=$currentSheet->getHighestColumn();
//获取总行数
$allRow=$currentSheet->getHighestRow();
//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
for($currentRow=2;$currentRow<=$allRow;$currentRow++){
//从哪列开始,A表示第一列
for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
//数据坐标
$address=$currentColumn.$currentRow;
//读取到的数据,保存到数组$arr中,$cell获取了每个单元格的内容,然后再根据需要对数据进行拼装
$cell =$currentSheet->getCell($address)->getValue();
}
$this->save_import($data_sum);
}
public function uploadFile(){
header("Content-Type:text/html;charset=utf-8");
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('xls', 'xlsx');// 设置附件上传类
$upload->savePath = '/'; // 设置附件上传目录
//dump($_FILES);exit();
// 上传文件
$info = $upload->uploadOne($_FILES['excelData']);
//dump($info);
//exit();
$filename = 'E:/tt/Uploads'.$info['savepath'].$info['savename'];
$exts = $info['ext'];
//dump($filename);exit;
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功调用导入的方法
$this->testExcel($filename, $exts);
}
}
//时间转换类
public function GetData($val){
$n = intval(($val - 25569) * 3600 * 24); //转换成1970年以来的秒数
$gregorian=gmdate('Y-m-d H:i:s', $n);//格式化时间
return $gregorian;
}
相关文章推荐
- PHP页面间传值的几种方法
- PHP文件上传及下载源码
- yii2邮件配置
- PHP框架开发教程(四) 单一入口
- Yii 2.0 时间日期插件之yii2-date-picker-widget
- Ubuntu下php5.5.9降级5.3.x
- Yii2.0 时间日期插件之yii-jui-datepicker
- php常用到的例子
- 传智五虎是真相?受影射最重PHP学科,这几月在忙什么..?
- 浅谈PHP值mysql操作类
- NTP时间服务器搭建及配置
- php简单生成缩略图方法
- PHP表单总结
- Yii 2 使用记录
- 如何使用phpstudy本地搭建多站点(每个站点对应不同的端口)
- WindowManager和WindowManager.LayoutParams的使用以及实现悬浮窗口的方法
- phpcms源码解析(2)
- php session 管理
- php session 管理
- php session 管理