首页 > 解决方案 > 您如何在 phpspreadsheet 中读取包含公式的文件?

问题描述

我有以下代码:

$Reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$Reader->setReadDataOnly( true );
try {
   $spreadSheet = $Reader->load( $file );
} catch (\Exception $e) {
   echo json_encode( $e->getMessage() );
   exit;
} catch (\PhpOffice\PhpSpreadsheet\Exception $e) {
   echo json_encode( $e->getMessage() );
   exit;
}

$excelSheet = $spreadSheet->getActiveSheet();
$spreadSheetAry = $excelSheet->toArray();
$maxCell = $excelSheet->getHighestRowAndColumn();
$data = $excelSheet->rangeToArray( 'A1:' . $maxCell['column'] . $maxCell['row'] );
$data = array_map( 'array_filter', $data );
$data = array_filter( $data );

如果它是不包含公式的文件,它工作正常。但是,如果我尝试读取包含公式的文件,则会收到以下错误: 致命错误:在 /var/www/html/vendor/phpoffice/phpspreadsheet/src 中允许的内存大小为 134217728 字节已用尽(尝试分配 67108872 字节) /PhpSpreadsheet/Cell/Coordinate.php 在第 395 行

我的问题是,如何让 phpspreadsheet 忽略或计算文件中的公式?错误发生在$Reader->load( $file ); 在尝试读取它时,我无法从文件中取回任何数据。

任何帮助将不胜感激!

标签: phpphpspreadsheet

解决方案


$Reader->setReadDataOnly( true );

说只读数据,你不能使用计算更多信息见这里。

删除以上行或将其设置为 false


推荐阅读