首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPExcel作者太慢了

PHPExcel作者太慢了
EN

Stack Overflow用户
提问于 2014-09-18 12:31:10
回答 1查看 1.6K关注 0票数 1

我正在生成一个.xls文件,其中有一个列包含这样的公式:

(A1=1;'xxx';IF(A1=2;'yyy';IF(A1=3;'zzz‘)

你知道,如果不是excel公式,那将是一个切换。

问题是,取决于我使用了多少IF,生成.xls文件所需的时间呈指数增长。

文件大小没有太大的不同。

我有18个病例,这意味着18个IF's,这需要相当长的时间。

为什么是这样?我可能做错什么了吗?

下面是一个示例代码:

代码语言:javascript
复制
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);

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-18 12:59:38

使用多个嵌套IFs的这样的公式无论如何都是低效的。

考虑用VLOOKUP替换多个嵌套的IFs

例如:

代码语言:javascript
复制
=VLOOKUP(A1,E1:F3,2,TRUE)

其中E列包含查找值1, 2, 3, ...,F列包含返回值aaa, yyy, zzz等)

这相当于MS中的开关语句

您会发现使用VLOOKUP比嵌套的IFs高效得多

要进一步减少保存文件所需的时间,请注意PHPExcel在默认情况下保存之前计算所有公式。您可以通过调用

代码语言:javascript
复制
$objWriter->setPreCalculateFormulas(false);

在调用保存之前

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25912686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档