使用PHPExcel解析Excel表格

摘要:
因为i=0是列标题!

安装类库

从GitHub上下载PHPExcel类库
地址:https://github.com/PHPOffice/PHPExcel

使用PHPExcel解析Excel表格第1张

解压后将Classes文件夹移动到ThinkPHP的extend目录,并将其重命名为phpexcel
使用PHPExcel解析Excel表格第2张

使用PHPExcel解析Excel表格第3张

在项目中需要的地方添加引用

import('phpexcel.PHPExcel', EXTEND_PATH);

代码实现

<?php
namespace appindexcontroller;

use thinkController;

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中的内容为
使用PHPExcel解析Excel表格第4张

在浏览器里访问,查看结果(此处获取的是json数据)
使用PHPExcel解析Excel表格第5张

将json数据(通过web前端助手插件)格式化之后
使用PHPExcel解析Excel表格第6张

可以看到已经解析出来的数据

补充:Chrome安装[Web前端助手]

点击下载web前端助手

打开Chrome的扩展程序
使用PHPExcel解析Excel表格第7张

把下载的.crx插件拖入浏览器,即可安装
使用PHPExcel解析Excel表格第8张

本文链接:https://www.cnblogs.com/connect/p/php-read-excel.html

免责声明:文章转载自《使用PHPExcel解析Excel表格》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用cmake构建gtk程序Flutter Android 打包apk遇到的问题。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mssql sqlserver 使用脚本输出excel文件的方法分享

转自:http://www.maomao365.com/?p=6683 摘要: 下文将分享使用sql脚本输出excel的方法 此脚本可以应用于 表或视图生成excel的方法,若需使用sql脚本输出excel数据,我们可将sql脚本生成视图或临时表,然后再输出excel------------------------------------输出excel...

Python数据分析:pandas玩转Excel (二)

1 对Excel文件的操作 方法一: 使用xlrd库或者xlwt库进行对excel表格的操作读与写; 方法二: pandas库同样支持excel的读写操作;且更加简便。 2 pd.read_excel( )的参数 读Excel文件 df=pd.read_excel(io, sheet_name=0, # 工作表名称...

使用NPOI读取Excel出错

使用NPOI读取Excel出错,错误信息:java.io.IOException: Invalid header signature; read 4503608217567241, expected –2226271756974174256 诊断:查看Excel文件大小为1k,正常新建Excel应为7K(取WPS标准),问题判断为读取文件信息错误,将Ex...

把页面的Table直接输出到Excel文件中

有个需求是统计的时候,为生成的html表格提供导出功能,但是这样导出Excel不会显示自身的表格 影响美观,但是excel会显示html的css样式,这里可以通过处理行对象的方式进行导出,但是处理起纵向合并比较麻烦,这里待续! 1 String newStr = new String(name.getBytes(), "ISO8859_1"); 2 res...

SpringBoot 整合EasyExcel 获取动态Excel列名

导读 最近负责消息网关,里面有个短信模板导入功能,因为不同模板编号对应不同参数,导入后的数据定时发送,涉及到Excel中列名不固定问题,于是想根据列名+值,组合成一个大JSON,具体代码如下。 引入依赖 <dependency> <groupId>com.alibaba</groupId...

C#中NPOI操作excel之读取和写入excel数据

一、下载引用 下载需要引用的dll,即:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode.SharpZipLib.dll(office2007版需要此dll)。 二、excel转datatable类 [csharp]view plaincopy usingSystem; usingSy...