使用phpexcel解析Excel数据表并存储到数据库中全过程_PHP_thinkphp_cmf
2016-06-22 15:26
1096 查看
摘要: 使用PHPExcel解析Excel数据表并存储到数据库中全过程,thinkphp模板
分享经验是为了让你少走弯路————华伟君
####PHP文件接收上传的核心代码:
####$info生成上传信息,并进行判断,如果上传成功,则拼接上传到服务器的文件路径及名称
内置类库路径常量为 VENDOR_PATH
.xls文件与.xlax文件的区别:
版本问题 ,XLSX是高版本。
07版以后的扩展名都是.xlsx ,是用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x(即.docx取代.doc、.xlsx取代.xls,等等),使其占用空间更小,可以向下兼容xls。
####在php文件中导入PHPExcel类库,并对Excel表格进行解析的代码:
####核心代码:使用foreach函数,循环对字段数组赋值,然后存入数据库
分享经验是为了让你少走弯路————华伟君
##使用PHPExcel解析Excel数据表并存储到数据库中全过程
###第一部分:thinkphp中实例化上传类获取from表单提交的文件(非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']; }
###第二部分:导入PHPExcel类库,并对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);
}
###最后
少侠,看完了,点个赞噻~相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- 使用Python生成Excel格式的图片
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- Excel 曝出 Power Query 安全漏洞,1.2 亿用户易受远程 DDE 攻击
- PHP数据库长连接mysql_pconnect的细节
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- Php Installing An Expansion
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- php7 读取php.ini[4]
- VBA将excel数据表生成JSON文件
- excel vba 限制工作表的滚动区域代码
- excel vba 高亮显示当前行代码
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法