公式“=''工作表1'!#A1”不适用于PHPExcel中的编写器Excel2007

时间:2017-05-23 09:11:24

标签: php phpexcel

PHPExcel的编写器excel2007有问题。来自另一个工作表名称的公式获取值不起作用。以下是我的代码。

$xfile = new PHPExcel();
$xfile->setActiveSheetIndex(0);
$sheet1 = $xfile->getActiveSheet();
$sheet1->setTitle('Sheet 1');
$sheet1->setCellValue('A1', 100);

$xfile->createSheet();
$sheet2 = $xfile->setActiveSheetIndex(1);
$sheet2->setCellValue('A1', "='Sheet 1'!A1");
$sheet2->setTitle('Sheet 2');

$objWriter = PHPExcel_IOFactory::createWriter($xfile, 'Excel2007');
$objWriter->save('test.xlsx');

$objWriter = PHPExcel_IOFactory::createWriter($xfile, 'Excel5');
$objWriter->save('test.xls');

在上面的脚本中,我生成了2个文件:test.xlsx和test.xls

在文件test.xls中,Sheet 2的A1值为100

但是在文件test.xlsx中,Sheet 2的A1值为0

=>正确的值是100

有没有办法在Excel2007中使用此公式?

注意:我通过Libre Office Calc打开2个文件。如果我用MS Excel打开,我不确定它是怎么回事。

enter image description here

1 个答案:

答案 0 :(得分:0)

您的问题是,您要将 发送到浏览器后发送 。这将导致各种问题,例如"标题已设置"。

同样适用于您正在使用的任何Writer ....在 之前发送标题 ,将电子表格保存到<?hph echo '<pre>'; echo htmlspecialchars(var_dump($_POST)); echo '</pre>'; ?>

如果您先发送标头,则此代码与预期完全一致