Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPExcel无法加载带有公式的电子表格_Php_Composer Php_Phpexcel_Import From Excel - Fatal编程技术网

PHPExcel无法加载带有公式的电子表格

PHPExcel无法加载带有公式的电子表格,php,composer-php,phpexcel,import-from-excel,Php,Composer Php,Phpexcel,Import From Excel,在尝试为文件创建读取器时,我遇到一些奇怪的错误。我使用的是devmaster分支,然后切换到1.8.1,但这似乎没有任何区别,因此我认为问题出在电子表格上 电子表格中使用了很多公式,例如: =IFERROR(VLOOKUP($A$1*1,'List'!A:H,P5,FALSE),"") =IF(A15>0,1,"") =IFERROR(VLOOKUP($A15,'Master'!$A:$R,18,FALSE)*P15,"") =IF(A16=0,"",IFERROR(VLOOKUP($A1

在尝试为文件创建读取器时,我遇到一些奇怪的错误。我使用的是devmaster分支,然后切换到1.8.1,但这似乎没有任何区别,因此我认为问题出在电子表格上

电子表格中使用了很多公式,例如:

=IFERROR(VLOOKUP($A$1*1,'List'!A:H,P5,FALSE),"")
=IF(A15>0,1,"")
=IFERROR(VLOOKUP($A15,'Master'!$A:$R,18,FALSE)*P15,"")
=IF(A16=0,"",IFERROR(VLOOKUP($A16,'Master'!$A:$O,2,FALSE),"Not Available"))
PHP:

$objReader = \PHPExcel_IOFactory::createReaderForFile($filename);
$r = $objReader->load($filename);
PHP Notice:  Undefined index: $ in
/var/www/html/myApp/vendor/phpoffice/phpexcel/Classes/PHPExcel/Cell.php
on line 809 PHP Stack trace: PHP   1. {main}()
/var/www/html/myApp/app/console:0 PHP   2.
Symfony\Component\Console\Application->run()
/var/www/html/myApp/app/console:22 PHP   3.
Symfony\Bundle\FrameworkBundle\Console\Application->doRun()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:121
PHP   4. Symfony\Component\Console\Application->doRun()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
PHP   5. Symfony\Component\Console\Application->doRunCommand()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:191
PHP   6. Symfony\Component\Console\Command\Command->run()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:904
PHP   7. App\MyApp\ImportBundle\Command\ImportCommand->execute()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:244
PHP   8. App\MyApp\ImportBundle\ImportService->import()
/var/www/html/myApp/src/App/MyApp/ImportBundle/Command/ImportCommand.php:35
PHP   9. App\MyApp\ImportBundle\Other\Importer->import()
/var/www/html/myApp/src/App/MyApp/ImportBundle/ImportService.php:44 PHP
10. App\MyApp\ImportBundle\Other\Importer->createAllocation() /var/www/html/myApp/src/App/MyApp/ImportBundle/Other/Importer.php:43
PHP  11.
App\MyApp\ImportBundle\Other\AllocationImporter->import()
/var/www/html/myApp/src/App/MyApp/ImportBundle/Other/Importer.php:70
PHP  12.
App\MyApp\ImportBundle\AbstractSpreadsheetReader->loadSpreadsheet()
/var/www/html/myApp/src/App/MyApp/ImportBundle/Other/AllocationImporter.php:26
PHP  13. PHPExcel_Reader_Excel2007->load()
/var/www/html/myApp/src/App/MyApp/ImportBundle/AbstractSpreadsheetReader.php:31
PHP  14. PHPExcel_Worksheet_AutoFilter->setRange()
/var/www/html/myApp/vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/Excel2007.php:1012
PHP  15. PHPExcel_Cell::rangeBoundaries()
/var/www/html/myApp/vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter.php:131
PHP  16. PHPExcel_Cell::columnIndexFromString()
/var/www/html/myApp/vendor/phpoffice/phpexcel/Classes/PHPExcel/Cell.php:729
错误:

$objReader = \PHPExcel_IOFactory::createReaderForFile($filename);
$r = $objReader->load($filename);
PHP Notice:  Undefined index: $ in
/var/www/html/myApp/vendor/phpoffice/phpexcel/Classes/PHPExcel/Cell.php
on line 809 PHP Stack trace: PHP   1. {main}()
/var/www/html/myApp/app/console:0 PHP   2.
Symfony\Component\Console\Application->run()
/var/www/html/myApp/app/console:22 PHP   3.
Symfony\Bundle\FrameworkBundle\Console\Application->doRun()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:121
PHP   4. Symfony\Component\Console\Application->doRun()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
PHP   5. Symfony\Component\Console\Application->doRunCommand()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:191
PHP   6. Symfony\Component\Console\Command\Command->run()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:904
PHP   7. App\MyApp\ImportBundle\Command\ImportCommand->execute()
/var/www/html/myApp/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:244
PHP   8. App\MyApp\ImportBundle\ImportService->import()
/var/www/html/myApp/src/App/MyApp/ImportBundle/Command/ImportCommand.php:35
PHP   9. App\MyApp\ImportBundle\Other\Importer->import()
/var/www/html/myApp/src/App/MyApp/ImportBundle/ImportService.php:44 PHP
10. App\MyApp\ImportBundle\Other\Importer->createAllocation() /var/www/html/myApp/src/App/MyApp/ImportBundle/Other/Importer.php:43
PHP  11.
App\MyApp\ImportBundle\Other\AllocationImporter->import()
/var/www/html/myApp/src/App/MyApp/ImportBundle/Other/Importer.php:70
PHP  12.
App\MyApp\ImportBundle\AbstractSpreadsheetReader->loadSpreadsheet()
/var/www/html/myApp/src/App/MyApp/ImportBundle/Other/AllocationImporter.php:26
PHP  13. PHPExcel_Reader_Excel2007->load()
/var/www/html/myApp/src/App/MyApp/ImportBundle/AbstractSpreadsheetReader.php:31
PHP  14. PHPExcel_Worksheet_AutoFilter->setRange()
/var/www/html/myApp/vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/Excel2007.php:1012
PHP  15. PHPExcel_Cell::rangeBoundaries()
/var/www/html/myApp/vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter.php:131
PHP  16. PHPExcel_Cell::columnIndexFromString()
/var/www/html/myApp/vendor/phpoffice/phpexcel/Classes/PHPExcel/Cell.php:729

一个问题是

=IFERROR(VLOOKUP($A$1*1,'List'!A:H,P5,FALSE),"")
PHPExcel不完全支持行或列引用,如
'List'!A:H
主控$A:$R

但是它确实支持范围引用,所以
'List'!A1:H1000
“主机”$A1:$R1024
将有效

编辑

但是,从堆栈转储来看,这似乎是自动筛选中的一个问题

作为一个“快速而肮脏”的黑客,您可能会检查文件
Classes/PHPExcel/Cell.php
,并在
rangebounders()
方法中,在第715行或周围(取决于您正在运行的确切版本/构建)查找

// Uppercase coordinate
$pRange = strtoupper($pRange);
并尝试将其更改为:

// Uppercase coordinate
$pRange = strtoupper(str_replace('$', '', $pRange));

开始使用空白电子表格,开始一个接一个地添加公式,看看是哪一个导致phpexcel呕吐。也许你发现了一个bug。。。