上一篇我们说了导出Excel的方法,现在要来解决导入的问题了。
1.前台先上传文件,并返回上传文件的新文件名,再点击导入
<form class="well js-ajax-form" method="post" action="{:u('AdminGoods/readExcel')}">
<a class="btn btn-primary" href="javascript:upload_one('文件上传','#excel','file','','taoke');">上传Excel</a><input name="filename" type="text" id="excel" />
<button class="btn btn-primary js-ajax-submit" type="submit">导入数据</button>
</form>
2.AdminbaseController
/**
* 导入Excel
* @param type $Excel_file
* @return type
/
public function importExcel($Excel_file){
error_reporting(E_ALL);
date_default_timezone_set('Asia/ShangHai');
vendor("PHPExcel.PHPExcel");
/* PHPExcel_IOFactory /
// Check prerequisites
if (!file_exists($Excel_file)) {
exit("not found ".$Excel_file."\n");
}
/
重要代码 解决Thinkphp M、D方法不能调用的问题
如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
*/
//spl_autoload_register ( array ('Think', 'autoload' ) );
$reader = \PHPExcel_IOFactory::createReader('Excel5'); //设置以Excel5格式(Excel97-2003工作簿)
$PHPExcel = $reader->load($Excel_file); // 载入excel文件
$sheet = $PHPExcel->getSheet(0); // 读取第一個工作表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumm = $sheet->getHighestColumn(); // 取得总列数
/** 循环读取每个单元格的数据 */
for ($row = 2; $row <= $highestRow; $row++){//行数是以第1行开始
for ($column = 'A'; $column <= $highestColumm; $column++) {//列数是以A列开始
$dataset[$row][] = $sheet->getCell($column.$row)->getValue(); //读取到数组中
// echo $column.$row.":".$sheet->getCell($column.$row)->getValue()."<br />";
}
}
return $dataset; //返回数组二维数组
exit;
}
3.AdminGoodsControoler
/**
* 读取Excel
*/
public function readExcel() {
$save_path = "./data/upload/";
if (IS_POST) {
$file = I("post.filename");
$file || $this->error("请上传Excel文件!");
$data = $this->importExcel($save_path.$file); //获取数组
foreach($data as $str_arr){
$push = array(
'good_name'=>$str_arr[0],
'good_img'=>$str_arr[1],
'old_price'=>$str_arr[2],
'price'=>$str_arr[3],
'shop_url'=>$str_arr[4],
'ticket_url'=>$str_arr[7],
'start_time'=>$str_arr[5],
'stop_time'=>$str_arr[6],
'read_num'=>0,
'sale_num'=>1,
'status'=>1,
'create_time'=>time(),
'update_time'=>time(),
);
$res = $this->model->add($push);
}
if ($res) {
$this->success("导入成功!");
} else {
$this->error("导入失败!");
}
}
}
4.简洁完整的介绍完了excel导入的功能,喜欢的朋友可以作为参考和学习哦