文档章节

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

尘世如潮
 尘世如潮
发布于 2016/06/17 23:23
字数 709
阅读 664
收藏 18

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


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

###最后

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

© 著作权归作者所有

尘世如潮
粉丝 17
博文 55
码字总数 27264
作品 0
烟台
私信 提问
加载中

评论(1)

纵使有花兼明月何堪无酒亦无人
纵使有花兼明月何堪无酒亦无人
php读取单个较大文件比较耗时耗内存。有什么解决办法没有。主要指xls
使用phpExcel实现Excel数据的导入导出(完全步骤)

很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人研究phpExcel的使用例程总结出来的使用方法,接下来直接进入...

daniel-john
2014/03/23
1K
0
ThinkPHP使用phpExcel实现Excel数据的导出

在实习的时候,接到一个任务要求将用户搜索出来的记录导出到excel,并保存在客户端,在网上找到了PHPExcel,用了一下,感觉很强大,基本上可以设置excel的所有样式。而我也只是用到了里面的很...

蜗牛奔跑
2015/07/17
88
0
整合ThinkPHP功能系列之PHPExcel生成Excel表格文件

开始整合 ThinkPHP 功能了,先把这两个导出 Excel 表的功能提交上去,项目地址:Github 昨天发 csv 格式的时候就说 PHPExcel 导出没有表头的问题,昨天研究了一下搞出来了 第一步:导入 phpe...

沈唁志
2018/05/19
0
0
Thinkphp用vendor方法引用PHPExcel,出现找不到控制类的情况

PHPExcel我放在如下路径 \ThinkPHP\Library\Vendor\PHPExcel\PHPExcel.php 引用时 Class 'Admin\Controller\PHPExcel' not found 错误位置 FILE: D:\*****隐藏******\App\Admin\Controller\C......

流水无痕Leo
2015/07/23
7.8K
1
thinkphp用phpexcel导出excel2007

thinkphp用phpexcel导出excel2007,浏览器中下载的excel打不开,提示: 服务器中也是这个错误,但是可以打开,通过浏览器下载的里面没有内容。 代码:

freedonn
2014/03/06
2.5K
3

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部