1.需要一个上传的一个方法
//上传Excel文件
public function upload() {
//引入ThinkPHP上传文件类
include 'FileUpload.class.php';
//实例化上传类
$upload = new \FileUpload();
//设置附件上传文件大小200Kib
$upload->mixSize = 2000000;
//设置附件上传类型
$upload->allowExts = array('xls', 'xlsx', 'csv');
//设置附件上传目录在/Home/temp下
$upload->savePath = './uploads/';// 设置附件上传目录
//保持上传文件名不变
$upload->saveRule = '';
//存在同名文件是否是覆盖
$upload->uploadReplace = true;
if (!$upload->upload()) { //如果上传失败,提示错误信息
$this->error($upload->getErrorMsg());
} else { //上传成功
//获取上传文件信息
$info = $upload->getUploadFileInfo();
//获取上传保存文件名
$fileName = $info[0]['savename'];
//重定向,把$fileName文件名传给importExcel()方法
$this->redirect('san/importExcel', array('fileName' => $fileName), 1, '上传成功!');
}
}
2.导入到数据库的方法
//导入Excel文件
public function importExcel() {
header("content-type:text/html;charset=utf-8");
//引入PHPExcel类
date_default_timezone_set("Asia/Shanghai");
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.IOFactory");
import("Org.Util.PHPExcel.Reader.Excel5");
import("Org.Util.PHPExcel.Reader.Excel2007");
//redirect传来的文件名
$fileName = $_GET['fileName'];
//文件路径
$filePath = './uploads/' . $fileName;
//实例化PHPExcel类
$PHPExcel = new \PHPExcel();
//默认用excel2007读取excel,若格式不对,则用之前的版本进行读取
$PHPReader = new \PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filePath)) {
$PHPReader = new \PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filePath)) {
echo 'no Excel';
return;
}
}
// $creat_time = date('Y-m-d H:i:s');
//读取Excel文件
$PHPExcel = $PHPReader->load($filePath);
//读取excel文件中的第一个工作表
$sheet = $PHPExcel->getSheet(0);
//取得最大的列号
$allColumn = $sheet->getHighestColumn();
//取得最大的行号
$allRow = $sheet->getHighestRow();
//从第二行开始插入,第一行是列名
for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
//获取B列的值
$san_qrcode = $PHPExcel->getActiveSheet()->getCell("B" . $currentRow)->getValue();
//获取C列的值
$site_name = $PHPExcel->getActiveSheet()->getCell("C" . $currentRow)->getValue();
//获取D列的值
$status = $PHPExcel->getActiveSheet()->getCell("D" . $currentRow)->getValue();
$use_status = $PHPExcel->getActiveSheet()->getCell("E" . $currentRow)->getValue();
//获取C列的值
$m = M('ybs_san');
$num = $m->add(array('san_qrcode' => $san_qrcode, 'site_name' => $site_name, 'status' => $status,'use_status' => $use_status));
}
if ($num > 0) {
$this->success("雨伞添加成功", U('san/index'));
} else {
$this->error("雨伞添加失败");
}
}
注意:你需要在tp的官网下载一个UploadFile.class.php 文件