我正在生成一个.xls文件,其中有一个列包含这样的公式:
(A1=1;'xxx';IF(A1=2;'yyy';IF(A1=3;'zzz‘)
你知道,如果不是excel公式,那将是一个切换。
问题是,取决于我使用了多少IF,生成.xls文件所需的时间呈指数增长。
文件大小没有太大的不同。
我有18个病例,这意味着18个IF's,这需要相当长的时间。
为什么是这样?我可能做错什么了吗?
下面是一个示例代码:
for ($k = 1; $k<16; $k++){
$cellID = "A".($row+$k);
$codes_if = '=IF('.$cellID.'="1",4579,'
.'IF('.$cellID.'="2",7978,'
... // some more IF's
.'""))))))))))))))))';
$actSheet->SetCellValue("B".($row+$k),$codes_if);
}发布于 2014-09-18 12:59:38
使用多个嵌套IFs的这样的公式无论如何都是低效的。
考虑用VLOOKUP替换多个嵌套的IFs
例如:
=VLOOKUP(A1,E1:F3,2,TRUE)其中E列包含查找值1, 2, 3, ...,F列包含返回值aaa, yyy, zzz等)
这相当于MS中的开关语句
您会发现使用VLOOKUP比嵌套的IFs高效得多
要进一步减少保存文件所需的时间,请注意PHPExcel在默认情况下保存之前计算所有公式。您可以通过调用
$objWriter->setPreCalculateFormulas(false);在调用保存之前
https://stackoverflow.com/questions/25912686
复制相似问题