1.先写出html
<form action="{:url('impcode')}" method="post" enctype="multipart/form-data">
<input type="file" name="import" style="display: none"/>
<input type="submit" class="btn btn-success" value="订单导入"/>
</form>
2.TP5框架下
public function impcode(){
$this->_user = is_login();
empty($this->_user) && $this->redirect("Admin/login");
$this->uid = $this->_user['id'];
if(empty($file)){
$this->error('请先选择文件');
}
$file = request()->file('import');
// 移动到框架应用根目录/uploads/excel 目录下
$info = $file->validate(['ext'=>'xls', 'xlsx', 'csv'])->move(ROOT_PATH . 'uploads' . DS . 'excel');
if($info){
// 成功上传后 获取上传信息
// 输出 775729d0f35f32240f541ae17d78a455.xls
$fileName = $info->getFilename();
//调用impcodeinfo方法
$this->impcodeinfo($fileName,$this->uid);
}else{
// 上传失败获取错误信息
echo $file->getError();
}
}
public function impcodeinfo($fileName,$id=0){
header("content-type:text/html;charset=utf-8");
vendor("phpexcel.PHPExcel");
vendor("phpexcel.PHPExcel.IOFactory");
vendor("phpexcel.PHPExcel.Reader.Excel5");
//文件路径(因为我的文件默认加了一层日期:../uploads/excel/20180409/775729d0f35f32240f541ae17d78a455.xls)
$filePath = '../uploads/excel/' .date('Ymd').'/'. $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;
}
}
//读取Excel文件
$PHPExcel = $PHPReader->load($filePath);
//读取excel文件中的第一个工作表
$sheet = $PHPExcel->getSheet(0);
//取得最大的列号
$allColumn = $sheet->getHighestColumn();
//取得最大的行号
$allRow = $sheet->getHighestRow();
//从第二行开始插入,第一行是列名
for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
//获取B列的值
$code = $PHPExcel->getActiveSheet()->getCell("A" . $currentRow)->getValue();
//获取C列的值
$name = $PHPExcel->getActiveSheet()->getCell("B" . $currentRow)->getValue();
//获取D列的值
$mobile = $PHPExcel->getActiveSheet()->getCell("D" . $currentRow)->getValue();
$m = db('codeinfo');
$num = $m->insert(array('code' => $code, 'username' => $name, 'mobile' => $mobile,'create_time'=>time(),'mid'=>$id));
}
if ($num > 0) {
$this->success('导入成功', url('codelist', ['p' => $this->_p]));
} else {
$this->error('导入失败');
}
}