PHP使用PhpSpreadsheet操作Excel实例详解(10)
2、导入数据
- 数据库
# 商品分类表 CREATE TABLE `shop_cat` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `pid` int(10) unsigned DEFAULT '0' COMMENT '父ID', `name` varchar(50) DEFAULT NULL COMMENT '分类名', `status` tinyint(1) unsigned DEFAULT '1' COMMENT '状态 1开启 0关闭', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='分类表'; INSERT INTO `shop_cat` VALUES (1, 0, '女装', 1); INSERT INTO `shop_cat` VALUES (2, 0, '男装', 1); INSERT INTO `shop_cat` VALUES (3, 0, '孕产', 1); INSERT INTO `shop_cat` VALUES (4, 1, '连衣裙', 1); INSERT INTO `shop_cat` VALUES (5, 1, '牛仔裤', 1); INSERT INTO `shop_cat` VALUES (6, 2, '衬衫', 1); INSERT INTO `shop_cat` VALUES (7, 3, '睡衣', 1); # 商品表 CREATE TABLE `shop_list` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `cat_id` int(10) unsigned DEFAULT NULL COMMENT '分类ID', `cat_fid` int(10) unsigned DEFAULT NULL COMMENT '分类父ID', `title` varchar(200) NOT NULL COMMENT '商品标题', `price` double(10,2) unsigned NOT NULL COMMENT '价格', `img` varchar(200) NOT NULL COMMENT '商品图片', `add_time` int(10) unsigned NOT NULL COMMENT '添加时间', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
- index.php 导入页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>导出数据</title> <link rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" rel="external nofollow" > </head> <body> <div style="text-align:center;"> <button type="button" class="layui-btn" id="up"><i class="layui-icon"></i>上传文件</button> <a href="download.php" rel="external nofollow" rel="external nofollow" class="layui-btn layui-btn-danger"><i class="layui-icon"></i>示例下载</a> </div> <div id="log" style="text-align:center;"> </div> </body> </html> <script src="layui/layui.js" charset="utf-8"></script> <script> layui.use('upload', function(){ var $ = layui.jquery ,upload = layui.upload; upload.render({ elem: '#up' ,url: 'data.php' ,accept: 'file' //普通文件 ,done: function(res){ if(res.code == 0){ for(var i=0;i<res.data.length;i++){ $("#log").append('<div>'+res.data[i]+'</div>'); } } } }); }) </script>
- 导入功能
<?php $file = $_FILES['file']['tmp_name']; # 载入composer自动加载文件 require 'vendor/autoload.php'; # 载入方法库 require 'function.php'; # 创建读操作 $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx'); # 打开文件、载入excel表格 $spreadsheet = $reader->load($file); # 获取活动工作薄 $sheet = $spreadsheet->getActiveSheet(); # 获取总列数 $highestColumn = $sheet->getHighestColumn(); # 获取总行数 $highestRow = $sheet->getHighestRow(); # 列数 改为数字显示 $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); $log = []; for($a=2;$a<$highestRow;$a++){ $title = $sheet->getCellByColumnAndRow(1,$a)->getValue(); $cat_fname = $sheet->getCellByColumnAndRow(2,$a)->getValue(); $cat_name = $sheet->getCellByColumnAndRow(3,$a)->getValue(); $price = $sheet->getCellByColumnAndRow(4,$a)->getValue(); $img = $sheet->getCellByColumnAndRow(5,$a)->getValue(); $cat_fid = find('shop_cat','id','name="'.$cat_fname.'"'); $cat_id = find('shop_cat','id','name="'.$cat_name.'"'); $data = [ 'title' => $title, 'cat_fid' => $cat_fid['id'], 'cat_id' => $cat_id['id'], 'price' => $price, 'img' => $img, 'add_time' => time(), ]; $ins = insert('shop_list',$data); if($ins){ $log[] = '第'.$a.'条,插入成功'; }else{ $log[] = '第'.$a.'条,插入失败'; } } echo json_encode(['code'=>0,'msg'=>'成功','data'=>$log]);
内容版权声明:除非注明,否则皆为本站原创文章。