接上篇“TP5 实现数据生成excel并下载”文章,实现将图示excel表格数据转入数据表中:
php代码:
public function addexcelOp() {
//获取上传文件信息
$file = request()->file('addexcel');
//1000b=1kb 大小不超过10mb
$info = $file->validate(['size'=>10000000 ,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel');
if($info){
//获取文件名
$excel_path=$info->getSaveName(); //'20190218\xinxi.xlsx'
//获取上传文件地址--
$file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $excel_path;//D:\wamp\www\admin1\public\excel\20190218\xinxi.xlsx
//获取上传文件后缀
$name = $info->getExtension();
//引入类
vendor("PHPExcel.PHPExcel.IOFactory");
if($name =='xlsx' ){
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
}else{
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
}
//只读去数据,忽略里面各种格式
$objReader->setReadDataOnly(true);
//加载文件内容 utf8geshi
$obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');
// echo "<pre>";
//转换为数组格式
$excel_array=$obj_PHPExcel->getsheet(0)->toArray();
//输出数组中的当前元素和下一个元素的值,然后把数组的内部指针重置到数组中的第一个元素
$arr = reset($excel_array);
//销毁标题
unset($excel_array[0]);
$data = [];
$i=0;
foreach ($excel_array as $k => $v) {
$data[$k]['company'] = $v[0];
$data[$k]['username'] = $v[1];
$data[$k]['mobile'] = $v[2];
$data[$k]['wxnum'] = $v[3];
$data[$k]['postdate'] =strtotime($v[4]);
$data[$k]['prov'] = $v[5];
$data[$k]['city'] = $v[6];
$data[$k]['area'] = $v[7];
$i++;
}
$res = db('tmall')->insertAll($data);
if($res){
$this->success('添加成功','index');
}else{
$this->error('添加失败');
}
}else{
$this->error($file->getError());
}
}
信息转入数据表中,图示: