php读取xlsx文件(PhpSpreadsheet如何读取excel文件)

车明贤
2023-12-01

php读取xlsx文件

安装

composer require phpoffice/phpspreadsheet

代码

<?php
    require './vendor/autoload.php';
    
    $filename = 'aa.xlsx';
    # 根据文件名自动创建 适用于不知道文件后缀时xls还是xlsx的情况
    $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filename);
    # 或者如果确定文件后缀,直接创建,性能会略优于上面方法
    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
    # $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xls");
    $spreadsheet = $reader->load($filename);
    # 甚至可以直接指定reader实现创建 性能又会优于上面一丢丢
    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
    # 可以额外设定只读模式,上面也试用,让工具只读取数据,不处理样式,性能会更好
    $reader->setReadDataOnly(true);
    $spreadsheet = $reader->load($filename);
   // $sheet = $spreadsheet->getActiveSheet();
    # 或者直接指定序号获得第一个sheet
    $sheet = $spreadsheet->getSheet(2);
    #  读取excel中A1数据,即第一行第一列,返回“姓名”
    //   $sheet->getCell('A1')->getValue();
    # B1 返回“性别”
    //$sheet->getCell('B1')->getValue();
    # 获取当前总行数
    $rows  = $sheet->getHighestRow();
    $users = [];
    # 一般excel中第一行为标题,所以实际数据从第二行开始 循环读取
    for($i = 1; $i <= $rows; $i++) {
        $temp = [];
        $temp['name'] = $sheet->getCell('A' . $i)->getValue();
        $temp['sex'] = $sheet->getCell('B' . $i)->getValue();
        $temp['age'] = $sheet->getCell('C' . $i)->getValue();
        # 防止空行情况
        if (!$temp['name']) {
            continue;
        }
        $users[] = $temp;
    }
    var_dump($users);
 类似资料: