ThinkPHP5.1上传excel文件并使用phpexcel读取表格数据

首先在工程内使用composer安装phpexcel:

composer require phpoffice/phpexcel

 

html部分:

<input type="file" id="img">
<input type="button" value="生成excel" onclick="create_excel">

js部分(formdata上传):

function create_excel(){
    let imgfile = $('#img')[0].files[0];
    let formdata = new FormData();
    formdata.append('imgfile',imgfile);
    $.ajax({
        url: "{:url('test/read_excel')}",
        data: formdata,
        dataType: 'json',
        type: 'post',
        contentType: false,
        processData: false,
        success: function(res){
            //代码块
        }
    });
}

后端控制器接收文件并调用读取方法:

//获取上传文件(此处应判断文件是否合法,可自行添加判断条件)
$imgfile = input('file.imgfile');

//生成路径和文件(路径可自定义,TP5.0版本可直接使用常量ROOT_PATH和DS)
$imgpath = Env::get('root_path').'public'.DIRECTORY_SEPARATOR.'uploads'.DIRECTORY_SEPARATOR.'excel.xls';
$imgfile->move(Env::get('root_path').'public'.DIRECTORY_SEPARATOR.'uploads','excel.xls',true);

//读取并返回数据
$data = read_excel($imgpath);
return $data;

上面的read_excel为自定义方法,用于读取excel表格中的数据,参数为文件路径

function read_excel($filename)
{
    //设置excel格式
    $reader = PHPExcel_IOFactory::createReader('Excel2007');
    //载入excel文件
    $excel = $reader->load($filename);
    //读取第一张表
    $sheet = $excel->getSheet(0);
    //获取总行数
    $row_num = $sheet->getHighestRow();
    //获取总列数
    $col_num = $sheet->getHighestColumn();

    $data = []; //数组形式获取表格数据
    for($col='A';$col<=$col_num;$col++)
    {
        //从第二行开始,去除表头(若无表头则从第一行开始)
        for($row=2;$row<=$row_num;$row++)
        {
            $data[$row-2][] = $sheet->getCell($col.$row)->getValue();
        }
    }
    return $data;
}

表格获取数据如下:

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值