【问题标题】:Formula “=''Sheet 1''!A1” does not work with writer Excel2007 in PHPExcel公式“=''Sheet 1''!A1”不适用于 PHPExcel 中的编写器 Excel2007
【发布时间】:2017-05-25 16:18:07
【问题描述】:

我对 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 打开会怎么样。

【问题讨论】:

    标签: php phpexcel


    【解决方案1】:

    您的问题是您发送 http 响应标头之后您将输出发送到浏览器。这将导致各种问题,例如“标头已设置”。

    无论您使用什么 Writer,这同样适用。您将电子表格保存到 php://output

    之前发送标题

    如果您先发送标头,则此代码将完全按预期工作

    【讨论】:

    • 感谢您的建议!我已经如上所述编辑了我的代码。问题是在 excel 的工作表 2 中,A1 单元格与工作表 1 的 A1 不等于 100。
    • 不幸的是,我自己尝试了这个,使用您在此处发布的代码(使用我在回答中所说的修复),它完全按预期工作......所以告诉我你得到了什么在第 2 页的 A1 中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多