使用PHPExcel解析Excel表格
安装类库
从GitHub上下载PHPExcel类库
地址:https://github.com/PHPOffice/PHPExcel
解压后将Classes
文件夹移动到ThinkPHP的extend
目录,并将其重命名为phpexcel
在项目中需要的地方添加引用
import('phpexcel.PHPExcel', EXTEND_PATH);
代码实现
<?php
namespace app\index\controller;
use think\Controller;
class Excel extends Controller
{
// 测试 http://127.0.0.1:8083/index/excel/index
public function index()
{
$path = "G:/student.xlsx";
$data = self::readExcel($path);
if (empty($data)) {
$json = json_encode([
'errcode' => '20001',
'errmsg' => '没有解析到数据',
'data' => []
], JSON_UNESCAPED_UNICODE);
} else {
$json = json_encode([
'errcode' => '10000',
'errmsg' => '读取数据成功',
'data' => $data
], JSON_UNESCAPED_UNICODE);
}
return $json;
}
//PHPExcel解析Excel表格
protected function readExcel($filePath)
{
// 引入类库
import('phpexcel.PHPExcel', EXTEND_PATH);
// 实例化对象
if (strstr($filePath, '.xlsx')) {
// 对应文件类型为 .xlsx
$PHPReader = new \PHPExcel_Reader_Excel2007();
} elseif (strstr($filePath, '.xls')) {
// 对应文件类型为 .xls
$PHPReader = new \PHPExcel_Reader_Excel5();
} else {
// 文件类型无法识别
return false;
}
// 载入Excel文件
$PHPExcel = $PHPReader->load($filePath);
// 获得sheet1
$sheet = $PHPExcel->getActiveSheet(0);
// 当前sheet的最大行数
$highestRow = $sheet->getHighestRow();
// 获取Excel数据
$arr = $sheet->toArray();
// 解析
$data = [];
$length = count($arr);
for ($i = 1; $i < $length; $i++) {
// 为什么i从1开始?因为i=0是列标题!
$data[$i-1] = [
'stuNo' => $arr[$i][0],
'name' => $arr[$i][1],
'class' => $arr[$i][2]
];
}
// 返回数据
return empty($data) ? [] : $data;
}
}
查看运行结果
Excel中的内容为
在浏览器里访问,查看结果(此处获取的是json数据)
将json数据(通过web前端助手插件)格式化之后
可以看到已经解析出来的数据
补充:Chrome安装[Web前端助手]
点击下载web前端助手
打开Chrome的扩展程序
把下载的.crx
插件拖入浏览器,即可安装