PHP
public function importexcel(){
$param = input();
$root = str_replace('/thinkphp','',IA_ROOT);
require($root.'/vendor/PHPExcel/PHPExcel.php');//引用你自己路径下的文件
if (!empty($_FILES['excel']['name'])) {
$fileName = $_FILES['excel']['name']; //得到文件全名
$dotArray = explode('.', $fileName); //把文件名安.区分,拆分成数组
$type = end($dotArray);
if ($type != "xls" && $type != "xlsx") {
$ret['res'] = "0";
$ret['msg'] = "不是Excel文件,请重新上传!";
$this->error('不是Excel文件,请重新上传!','/admin/feedback/manageFeedback/ctid/75',1);
}
//取数组最后一个元素,得到文件类型
$uploaddir = iconv("UTF-8", "GBK", $root."/excel/".date('Ymd').'/');
if (!file_exists($uploaddir)) {
mkdir($uploaddir, 0777,true);
}
$path = $uploaddir . md5(uniqid(rand())) . '.' . $type; //产生随机文件名
//$path = "images/".$fileName; //客户端上传的文件名;
//下面必须是tmp_name 因为是从临时文件夹中移动
move_uploaded_file($_FILES['excel']['tmp_name'], $path); //从服务器临时文件拷贝到相应的文件夹下
$file_path = $path;
if (!file_exists($path)) {
$ret['res'] = "0";
$ret['msg'] = "上传文件丢失!" . $_FILES['excel']['error'];
$this->error("上传文件丢失!" . $_FILES['excel']['error'],'/admin/feedback/manageFeedback/ctid/75',1);
}
//文件的扩展名
$ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
if ($ext == 'xlsx') {
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($file_path, 'utf-8');
} elseif ($ext == 'xls') {
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($file_path, 'utf-8');
}
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$ar = array();
$i = 0;
$importRows = 0;
for ($j = 2; $j <= $highestRow; $j++) {
$importRows++;
$number = (string)$objPHPExcel->getActiveSheet()->getCell("A$j")->getValue();//需要导入的number
$data['number'] = $number;
$ret['mdata'] = Db::name('product_number')->insert($data);
if ($ret['mdata'] && !is_Bool($ret['mdata'])) {
$ar[$i] = $ret['mdata'];
$i++;
}
}
if ($i > 0) {
$ret['res'] = "0";
$ret['errNum'] = $i;
$ret['allNum'] = $importRows;
$ret['sucNum'] = $importRows - $i;
$ret['mdata'] = $ar;
$ret['msg'] = "导入完毕!";
echo '正在导入...';
// return json_encode($ret);
}
$this->success("上传文件完成!" ,'/admin/feedback/manageFeedback/ctid/75',1);
}else {
$ret['res'] = "0";
$ret['msg'] = "上传文件失败!";
$this->error("上传文件丢失!" ,'/admin/feedback/manageFeedback/ctid/75',1);
// return json_encode($ret);
}
}
前端:
<form action="/admin/feedback/importexcel" method="post" enctype="multipart/form-data">
<input type="file" name="excel" value="导入excel" datatype="*4-50"/>
<input type="submit" name="submit" id="submit" value="提交" />
</form>
excel表格样例: