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

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);

两个都一样的,选一个
下面的是打印所有的列跟数据

<?php
require 'vendor/autoload.php'; // 引入自动加载文件

use PhpOffice\PhpSpreadsheet\IOFactory;

$filename = 'path/to/your/file.xlsx';

// 通过IOFactory加载文件
$spreadsheet = IOFactory::load($filename);

// 获取第一个工作表
$worksheet = $spreadsheet->getActiveSheet();

// 获取行数和列数
$rows = $worksheet->getHighestRow();
$columns = $worksheet->getHighestColumn();

// 循环读取数据
for ($row = 1; $row <= $rows; $row++) {
    for ($column = 'A'; $column <= $columns; $column++) {
        $cellValue = $worksheet->getCell($column . $row)->getValue();
        echo $cellValue . "\t";
    }
    echo "\n";
}
?>

有问题随时留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打工人_007_QqQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值