2016-04-22 142 views
0

我花了最后几天试图解决此问题。我有一个电子表格与几个选项卡(工作表)。最后一个选项卡具有所有其他选项卡中的值输入。这些值可以用公式像自动填充:PHPExcel:如何从单元格中读取内容来自其他表格中的单元格的值

=$'otherSheetName'.A1 

如果我离开calculateFormulas = true这些值显示为空。 如果我设置calculateFormulas = false,则将这些值作为文字公式读取。

我第一次使用LaravelExcel,但因为找到解决方案而放弃了,所以我搬到了PHPExcel。尽管Laravel Excel的解决方案也会受到赞赏。

感谢

更新: 在PHPExcel我如何读值:

$inputFileType = PHPExcel_IOFactory::identify($file->getRealPath()); 
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
$objReader->setLoadSheetsOnly("MySheet"); 
$objPHPExcel = $objReader->load($file->getRealPath()); 
$rows = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true); 

然后,我遍历数组$行和提取我想要的值。

+0

你是如何读取PHPExcel中的值的?你使用getCalculatedValue()吗? –

+0

而Excel公式应该像'='otherSheetName'!A1',其中sheetname使用单引号,'!'将工作表名称与单元格地址分开 –

+0

@MarkBaker我更新了我的文章。在那里检查我是如何读取数值的。关于这个公式,它看起来和我放在那里一样 - 并且它工作正常。顺便说一句,我没有创造它。 – Leandro

回答

1

你需要加载在这些公式中使用,虽然你不一定需要加载每个工作表中的所有依赖表,但可以通过表名称列表加载作为一个数组

$objReader->setLoadSheetsOnly(["MySheet", "OtherSheet1", "OtherSheet2"]); 

你并不需要遍历任何其他工作表,但可以设置为你想要

$objReader->setActiveSheetIndexByName("MySheet"); 

,然后到活动工作表($objPHPExcel->getActiveSheet()->...)任何电话访问细胞将是一个参考表为准活动工作表该工作表。

+0

非常感谢!它击中了头上的钉! – Leandro

+0

最后一个问题,你知道Laravel Excel中这个“setActiveSheetIndexByName”方法的等价物吗? – Leandro

+1

@Leandro - 我不知道,但由于Maatwebsite包装使用PHPExcel,并允许访问PHPExcel方法,所以它应该是可能的 –

相关问题