如题
不说别的了,直接上代码。本人是个菜菜,刚学thinkphp框架,请各位高手多多指教!!测试过可以添加,不知道文件太大了效率怎么样。
<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
public function index(){
$this->display();
}
Public function upload(){
import('ORG.Net.UploadFile');
$upload = new UploadFile();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->allowExts = array('xls','xlsx','csv');// 设置附件上传类型
$upload->savePath = './Public/Uploads/';// 设置附件上传目录
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
//加载第三方类库PHPExcel
vendor('phpexcel.PHPExcel');
vendor('phpexcel.PHPExcel.IOFactory');
vendor('phpexcel.PHPExcel.Reader.Excel5');
vendor('phpexcel.PHPExcel.Reader.Excel2007');
// 加载excel文件
$inputfilename=$info[0]['savepath'].$info[0]['savename'];
$extension=$info[0]['extension'];
switch ($extension) {
case 'xls':
$objReader = new PHPExcel_Reader_Excel5();
break;
case 'xlsx':
$objReader = new PHPExcel_Reader_Excel2007();
break;
case 'csv':
$objReader = new PHPExcel_Reader_CSV();
break;
default:
$this->error('上传的文件类型不匹配');
break;
}
$objPHPExcel = $objReader->load($inputfilename);
$currentsheet = $objPHPExcel->getActiveSheet();//获取活动工作薄
$allcolumn = $currentsheet->getHighestColumn();//获取最大列数
$allrow = $currentsheet->getHighestRow();//获取最大行数
$allcolumnindex = PHPExcel_Cell::columnIndexFromString($allcolumn);//将列数的字母索引转换成数字
//建立模型
$data = M('data');
//读取excel文件中的数据
for($row=2;$row<=$allrow;$row++){
$str=array();
for($column=0;$column<$allcolumnindex;$column++){
$str[$column]=$currentsheet->getCellByColumnAndRow($column,$row)->getValue();
}
//赋值到数组中
$record=array(
'username' => $str[0],
'password' => $str[1],
'idcard' => $str[2],
);
//把数据插入到数据库中
$data->create($record);
$data->add();
}
}
}