Прочитайте XLS в PHP, используя PhpSpreadsheet - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть требования для чтения файлов XLS (не xlsx) с использованием PhpSpreadsheet, и у меня возникли проблемы.Я попробовал это (как говорится в документации, но ...)

require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("lista.xls");
$worksheet = $spreadsheet->getActiveSheet();

echo '<table>' . PHP_EOL;
foreach ($worksheet->getRowIterator() as $row) {
    echo '<tr>' . PHP_EOL;
    $cellIterator = $row->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(FALSE); // This loops through all cells,
                                                       //    even if a cell value is not set.
                                                       // By default, only cells that have a value
                                                       //    set will be iterated.
    foreach ($cellIterator as $cell) {
        echo '<td>' .
             $cell->getValue() .
             '</td>' . PHP_EOL;
    }
    echo '</tr>' . PHP_EOL;
}
echo '</table>' . PHP_EOL;

echo "<br>fin";

, но не сработало (это работало с файлом xlsx, но не с файлом xls!)

ЗатемЯ пытался открыть файл по-другому:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$sheet = $reader->load("lista.xls");

, но также не работает ...

Мне действительно нужно решить эту проблему ... пожалуйста, помогите!PS: я пробовал BasicExcel и PHPExcel, но, похоже, тоже не работал

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

попробуйте удалить это утверждение

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("lista.xls");

и измените его с помощью этого

$inputFileName = "lista.xls";
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReaderForFile($inputFileName);
$reader->setReadDataOnly(TRUE);
$spreadsheet = $reader->load($inputFileName);
0 голосов
/ 13 сентября 2018

Я бы уточнил у ваших клиентов, используют ли они настоящий Excel или какую-либо другую электронную таблицу.

Если они используют другую электронную таблицу и экспортируют ее с помощью функции «Экспортировать в Excel», которая может объяснить, почему она не распознается PHPSpreadsheet в качестве любого из возможных допустимых форматов Excel.

В этом случае, и в зависимости от того, что находится в электронной таблице, возможно, стоит попросить их экспортировать свою электронную таблицу в виде файла csv (значения с разделителями-запятыми), поскольку это такой простой формат, который должен быть действительным выводом. , Затем вы можете прочитать его, используя fgetcsv() вызовы функций, вместо использования PHPSpreadsheet.

...