调用未定义的方法 PhpOffice\PhpSpreadsheet\Spreadsheet::listWorksheetNames

Call to undefined method PhpOffice\PhpSpreadsheet\Spreadsheet::listWorksheetNames

我想列出工作簿中的所有工作表名称,但出现以下错误:

Call to undefined method PhpOffice\PhpSpreadsheet\Spreadsheet::listWorksheetNames()

这是我的代码:

<?php
require_once('vendor/autoload.php');

use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
 
$inputFileName = 'uploads/1.xlsx';
$spreadsheet = IOFactory::load($inputFileName);
$worksheetNames = $spreadsheet->listWorksheetNames();

echo '<h3>Worksheet Names</h3>';
echo '<ol>';
foreach ($worksheetNames as $worksheetName) {
    echo '<li>', $worksheetName, '</li>';
}
echo '</ol>';
?>

我试图重复:https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-files/#reading-only-named-worksheets-from-a-file

我的错误在哪里?

尝试将第 8 行更改为 $spreadsheet = IOFactory::createReader($inputFileName);

如果您查看文件 IOFactory#L61,您将能够注意到 createReader returns a Reader\IReader对象。

另一方面,函数 loadthe same file returns 一个 电子表格 对象。

函数 listWorksheetNames 属于 Readers,如您所见,例如,在 Reader/Xlsx.php.

简单地说:您只能在 Reader 对象上调用 listWorksheetNames