thinkphp整合系列之phpexcel导入excel数据
作者寄语:
thinkphp整合系列之phpexcel导入excel数据
和 php生成csv格式的excel表格 两种生成excel的方法 http://baijunyao.com/article/81
应 简简单单 同学的评论需求;
这里熬夜加班加点写出一个phpexcel导入数据的方法;
示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin
一:导入phpexcel
/ThinkPHP/Library/Vendor/PHPExcel
二:导入excel的函数
/**
* 导入excel文件
* @param string $file excel文件路径
* @return array excel文件内容数组
*/
function import_excel($file){
// 判断文件是什么格式
$type = pathinfo($file);
$type = strtolower($type["extension"]);
$type=$type==='csv' ? $type : 'Excel5';
ini_set('max_execution_time', '0');
Vendor('PHPExcel.PHPExcel');
// 判断使用哪种格式
$objReader = PHPExcel_IOFactory::createReader($type);
$objPHPExcel = $objReader->load($file);
$sheet = $objPHPExcel->getSheet(0);
// 取得总行数
$highestRow = $sheet->getHighestRow();
// 取得总列数
$highestColumn = $sheet->getHighestColumn();
//循环读取excel文件,读取一条,插入一条
$data=array();
//从第一行开始读取数据
for($j=1;$j<=$highestRow;$j++){
//从A列读取数据
for($k='A';$k<=$highestColumn;$k++){
// 读取单元格
$data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
}
}
return $data;
}
三:调用示例先用之前文章生成excel的方法分别生成了xls和csv格式的表格放在了/Upload/excel/目录下;
当然正常导入的话;是需要用户上传excel文件的;
这里就略过上传的过程;直接写的是传入文件路径调用函数的了;
/Application/Home/Controller/IndexController.class.php
/**
* 导入excel数据
*/
public function import(){
// 导入csv格式的数据
$data=import_excel('./Upload/excel/simple.csv');
p($data);
// 导入xls格式的数据
$data=import_excel('./Upload/excel/simple.xls');
p($data);die;
}
//*******************回复 李庆发-多迪网络 童鞋的分割线*******************************2016.8.22补充:
上面的p函数是为了优化输出显示的样式:以符合人类阅读的方式打印php数组
整合到自己的项目中用var_dump代替查看即可;
2016.8.22补充:
这里将上面的import拆为两个方法;
关于phpexcel导入大文件效率的问题;
建议将xls转为csv格式的表格;
然后调用import_csv这个方法
/**
* 导入xls格式的数据
* 也可以用来导入csv格式的数据
* 但是csv建议使用 下面的import_csv 效率更高
*/
public function import_xls(){
$data=import_excel('./Upload/excel/simple.xls');
p($data);
}
/**
* 导入csv格式的数据
*/
public function import_csv(){
$data=file_get_contents('./Upload/excel/simple.csv');
$data=explode("\r\n", $data);
p($data);
}
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://baijunyao.com