<?php
class Excel2Db{
public $filePath = "../../../../excel_file/";
public function __construct($filePath)
{
$this->filePath = $filePath;
$this->insertExcel();
}
private function insertExcel(){
$file_name = $_FILES['excel']['name'];
$tmp_name = $_FILES['excel']['tmp_name'];
$file_size = $_FILES['excel']['size'];
$file_error = $_FILES['excel']['error'];
// 处理excel文件
$this->checkExcel($file_name,$file_size,$file_error);
// 上传excel文件
$uploadfilename = $this->d_file_move($file_name,$tmp_name);
if (isset($uploadfilename) && !empty($uploadfilename)) {
if ( file_exists($uploadfilename) && is_readable($uploadfilename)) {
// 读取上传的excel文件并导入数据库
$res_insert= $this->insertExceltoDatabase($uploadfilename);
unlink($uploadfilename); //删除之前上传的文件
echo $res_insert;
}else{
die("<script>alert('上传文件不可读,请上传可读文件');history.back(-1);</script>");
}
}
else
{
showMessage("文件上传失败!");
}
}
/**
* 处理excel文件
*/
private function checkExcel($file_name,$file_size,$file_error){
if ($file_name != '') {
$fileExcel = substr(strrchr($file_name,'.'), 1);
if ($fileExcel != 'xls') {
die("<script>alert('文件格式不正确,只可上传.xls类型的文件');history.back(-1);</script>");
}
if($file_size>512000){
die("<script>alert('文件过大,最大为500K');history.back(-1);</script>");
}
if($file_error!=0){
die("<script>alert('未知错误,文件上传失败');history.back(-1);</script>");
}
}else{
showMessage("Excel文件上传错误,请检查后重新上传!");
}
}
/**
* 上传文件方法
*/
private function d_file_move($file,$filetempname){
$filePath = $this->filePath;//上传文件的路径
if(!is_dir($filePath)) mkdir($filePath);//检查并创建文件夹
$time = date('YmdHis',time());//设置文件名,注意设置时区
$extend = strchr($file,'.');//获取文件后缀
$newname = $time.$extend;//设置上传后完整的文件名
$uploadfile = $filePath.$newname;//文件路径
if(file_exists($uploadfile)){
die("<script>alert('文件已存在,请重新上传');history.back(-1);</script>");
}
$res = move_uploaded_file($filetempname,$uploadfile);//通过move_uploaded_file函数移动文件到指定目录
if($res) return $uploadfile;//如果成功返回当前文件路径
return false;
}
/**
* Excel导入数据库
*/
private function insertExceltoDatabase($uploadfilename){
$coupon_member_model = Model('coupon_member');
$data=new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('utf-8');
$data->read($uploadfilename); // 注意上传的Excel要是能够正常读取编辑的才可以
$rownum=$data->sheets[0]['numRows'];
$str="";
$success=0;
$insert_coupon_data = array();
for ($i=2; $i <=$rownum ; $i++) {
$coupon_code=trim($data->sheets[0]['cells'][$i][1]);
$coupon_pwd=trim($data->sheets[0]['cells'][$i][2]);
//验证填写信息是否正确
if (!isset($coupon_code) || empty($coupon_code)) {
$str.="抵用券编码为空,第".$i."行\\n";
continue;
}
if (!isset($coupon_pwd) || empty($coupon_pwd)) {
$str.="抵用券密码为空,第".$i."行\\n";
continue;
}
$coupon_data['coupon_code'] = $coupon_code;
$coupon_data['coupon_pwd'] = $coupon_pwd;
$insert_coupon_data[] = $coupon_data;
$success++;
}
// 批量插入数据表
if ($success>0) {
$res_insert = $coupon_member_model->addCouponMemberAll($insert_coupon_data);
return "<script>alert('成功导入".$success."条记录,失败记录:\\n".$str."');history.back(-1);;</script>";
}else{
return false;
}
}
}
新手小白一个,希望大神指点!