有人可以告诉我为什么会收到此错误?
PHP Fatal error: Uncaught exception 'PHPExcel_Calculation_Exception' with message 'Worksheet!E48 -> Formula Error: An unexpected error occured' in PHPExcel/1.8.0/Classes/PHPExcel/Cell.php:300
Stack trace:
#0 PHPExcel/1.8.0/Classes/PHPExcel/Writer/Excel5/Worksheet.php(460): PHPExcel_Cell->getCalculatedValue()
#1 PHPExcel/1.8.0/Classes/PHPExcel/Writer/Excel5.php(187): PHPExcel_Writer_Excel5_Worksheet->close()
#2 export/the_script.php(98): PHPExcel_Writer_Excel5->save('the_export.xls')
#3 {main}
thrown in PHPExcel/1.8.0/Classes/PHPExcel/Cell.php on line 300
生成此错误的代码:
$excel = new PHPExcel();
$excel->setActiveSheetIndex(0);
$R = $db->query("SELECT col1, col2, col3 from table1");
while($row = $R->fetch(Zend_Db::FETCH_NUM)) {
$excel->getActiveSheet()->fromArray($row, false, 'A'.$i);
$i++;
}
$excelWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$excelWriter->save('the_export.xls');
正如您所看到的,没有公式,没有任何内容......将数据从数据库简单地转储到Excel文件中...... 运行PHP 5.3.2
答案 0 :(得分:3)
我猜测从您的数据库中检索到的值之一以=
符号开头,在这种情况下,PHPExcel将“猜测”它应该是一个公式并存储它。
如果您的值以=
开头并非公式,那么您需要告诉PHPExcel它是一个字符串,并且应该存储它。
此行为在默认单元格活页夹(PHPExcel/Cell/DefaultValueBinder.php
)中定义。
如果要强制PHPExcel将这些值存储为字符串,则可以使用setCellValueExplicit()
方法(默认为强制执行字符串)
或者您可以编写自定义值绑定器并应用它而不是默认值绑定器