步骤:
1.判断excel类型(后缀名为.xls与.xlsx)
2.读取文件(load($path))
3.获取工作薄(getSheet(0))
4.获取总行数(getHighestRow())
5.获取总列数(getHighestColumn())
6.重点理解这一步数据拼装:循环取出每个单元格的值并拼装数组(getActiveSheet()->getCell(“A2”)->getValue())
7.组装数组,完成业务逻辑
里边遍历行和列的算法类似冒泡排序算法
控制器index使用扩展exetend,主要留意如何使用extend扩展目录里定义的类
<?php
namespace app\index\controller;
use think\Controller;
use Excel\Excel;
class Index extends Controller
{
public function importexcel()
{
$path = './uploads/cat.xls';
halt(Excel::importexcel($path));
}
}
封装好的Eextend扩展目录下Excel.php代码
<?php
namespace Excel;
//在Excel命名空间下引入了PHPExcel和PHPExcel_IOFactory,下次直接use Excel就可引入他俩
use PHPExcel;
use PHPExcel_IOFactory;
class Excel
{
// 读取Excel表格数据
public static function importexcel($path){
// 判断文件是什么格式
$type = pathinfo($path);
$type = strtolower($type["extension"]);
if ($type == 'xlsx') {
$type = 'Excel2007';
} elseif ($type == 'xls') {
$type = 'Excel5';
}
//最长执行时间,php默认为30秒,这里设置为0秒的意思是保持等待直到程序执行完成
ini_set('max_execution_time', '0');
// 判断使用哪种格式
$objReader = PHPExcel_IOFactory::createReader($type);
$objPHPExcel = $objReader->load($path);
$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;
}
}