php存储数据到excel中,使用phpexcel解析Excel数据表并存储到数据库中全过程_PHP_thinkphp_cmf...

分享经验是为了让你少走弯路————华伟君

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

###第一部分:thinkphp中实例化上传类获取from表单提交的文件(非thinkPHP用户可以忽略,直接看第二部分)

####HTML文件核心代码:

上传

####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); }

###最后

少侠,看完了,点个赞噻~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值