首页 > 编程 > PHP > 正文

使用phpexcel解析Excel数据表并存储到数据库中全过程

2019-11-11 07:50:16
字体:
来源:转载
供稿:网友

第一步:Thinkphp中实例化上传类获取form表单提交的文件(非ThinkPHP可以直接忽略第一步,直接看第二步)

HTML文件核心代码

<form action="{:U('Question/add_Excel_post')}" enctype="multipart/form-data" method="post"><input type="file" name="excel_file" class="input"><button class="btn btn-PRimary" type="submit">上传</button></form>

PHP文件接收上传的核心代码

$upload = new /Think/Upload();// 实例化上传类 $upload->maxSize = 3145728 ;// 设置附件上传大小 $upload->exts = array('xls', 'xlsx');// 设置附件上传类型 $upload->rootPath = './'; // 设置附件上传根目录 $upload->savePath = 'Uploads/ExamPaper/'; // 设置附件上传(子)目录 $upload->autoSub = false;//不自动生成子文件夹 // 上传单个文件 $info = $upload->uploadOne($_FILES['excel_file']);

$info生成上传信息,并进行判断,如果上传成功,则拼接上传到服务器的文件路径及名称

if(!$info){ $this->error($upload->getError()); }else{ $file_puth = './'.$info['savepath'].$info['savename']; }

第二步:导入ExcelPHP类库,并对Excel表格进行查询解析

ThinkPHP种,第三方类库的存放文件路径是:ThinkPHP/Extend/Vendor内置类库路径常量为VENDOR_PATH.xls文件与.xlax文件的区别: 版本问题 ,XLSX是高版本。 07版以后的扩展名都是.xlsx ,是用新的基于xml的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x(即.docx取代.doc、.xlsx取代.xls,等等),使其占用空间更小,可以向下兼容xls。

在PHP文件中导入PHPExcel类库,并对Excel表格进行解析:

require_once VENDOR_PATH.'PHPExcel_1/PHPExcel/IOFactory.php';require_once VENDOR_PATH.'PHPExcel_1/PHPExcel.php';//判断文件版本,选择对应的解析文件if($info['ext']=='xlsx'){ require_once VENDOR_PATH.'PHPExcel_1/PHPExcel/Reader/Excel2007.php'; $objReader = /PHPExcel_IOFactory::createReader('Excel2007'); }else{ require_once VENDOR_PATH.'PHPExcel_1/PHPExcel/Reader/Excel5.php'; $objReader = /PHPExcel_IOFactory::createReader('Excel5');}//解析Excel文件$objPHPExcel = $objReader->load($file_puth);$sheet = $objPHPExcel->getSheet(0);// 读取第一个工作表(编号从 0 开始) $highestRow = $sheet->getHighestRow(); // 取得总行数$highestColumn = $sheet->getHighestColumn(); // 取得总列数//循环读取excel文件,读取一条,插入数组一条for($j=2;$j<=$highestRow;$j++) { for($k='A';$k<=$highestColumn;$k++) { //读取单元格 $ExamPaper_arr[$j][$k]= $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); } }

第三步:将获取到的数据存入数据库

使用foreach函数,循环对字段数组赋值,然后存入数据库$question_model=M('question');$question_relationships_model = M('question_relationships');$answer_model = M('answer');foreach ($ExamPaper_arr as $key => $value) {$title_data['q_id'] = empty($value['A'])?0:$value['A'];$title_data['post_title'] = empty($value['B'])?0:$value['B'];$title_data['post_description'] = empty($value['D'])?0:$value['D'];$title_data['post_difficulty'] = empty($value['E'])?0:$value['E'];$title_data['post_date'] = time();$question_model->add($title_data);}
上一篇:php 全局变量总结

下一篇:PHP __call()方法

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表