在PHP应用程序中使用Excel进行核心分析?

在PHP应用程序中使用Excel进行核心分析?,php,phpexcel,Php,Phpexcel,我认为这确实是一个关于方法的问题 我们有一个来自第三方的核心Excel电子表格,它提供了一些原始数据的复杂分析。原始数据在第二个电子表格中直接来自客户 我们希望创建一个基于web服务器的自动化系统,在该系统中可以上载原始数据Excel文件,执行分析,并生成报告 生成报告没有问题,但在应用程序中实际使用核心Excel电子表格本身进行计算(例如使用PHPExcel)是否有什么好处?还是最好的方法总是在代码中复制分析 我们的想法是,分析(来自第三方)相当复杂,因此在PHP中复制需要相当多的取消链接,其

我认为这确实是一个关于方法的问题

我们有一个来自第三方的核心Excel电子表格,它提供了一些原始数据的复杂分析。原始数据在第二个电子表格中直接来自客户

我们希望创建一个基于web服务器的自动化系统,在该系统中可以上载原始数据Excel文件,执行分析,并生成报告

生成报告没有问题,但在应用程序中实际使用核心Excel电子表格本身进行计算(例如使用PHPExcel)是否有什么好处?还是最好的方法总是在代码中复制分析

我们的想法是,分析(来自第三方)相当复杂,因此在PHP中复制需要相当多的取消链接,其次,第三方经常调整分析的部分,这意味着定期向我们提供新版本的Excel

我可以想象使用PHPExcel做类似的事情,在内存中创建工作表,并将原始数据合并为第二个工作表,然后读取计算结果,但这是现实的吗?它会太慢吗?或者只是不能像我想象的那样工作


任何想法都将不胜感激。

根据Excel公式的复杂性,使用PHPExcel的计算引擎是完全可行的,但您需要注意一些潜在的“陷阱”

  • 并非所有Excel函数都完全受支持(提供了一个列表 在PHPExcel文档中,但我认为356个函数中有316个函数 (现在受支持)
  • 不支持分析工具包中的Excel函数 支持BIFF(.xls)工作簿;尽管他们将与 OfficeOpenXML(xlsx)工作簿
  • 不支持用户定义的函数 支持
  • 不支持宏和其他VB代码
  • 数组公式 尚未得到支持(这是计划项目的重要组成部分 重写计算引擎,预计年底启动)
  • 单元格引用不支持R1C1格式
它相对较慢(部分原因是它需要重写)。您当然可以编写PHP代码来更有效地执行所需的公式,因为您可以根据特定的需求编写代码。PHPExcel是否会太慢?只有你才能确定“太慢”的真正含义

请注意,通常最好提交在web服务器之外运行的大量内存或耗时任务的请求

另一方面,如果您的客户曾经更改过他们的电子表格(并且您指出这相当频繁),那么使用PHPExcel的内置计算引擎意味着它仍然可以正常工作,而自定义编写的代码则需要修改。
正如您已经指出的,复杂的公式可能需要大量工作才能转换为PHP代码;而且,在电子表格中取消对公式所做的修改将特别困难。

实际上并不是解决问题的方法,但首选的方法是在PHP端构建计算,然后让客户/第三方以指定格式提交数据(最好是CSV文件),然后解析数据并执行任何必要的计算。

我对PHPExcel不太熟悉,所以我不知道它如何忠实地复制Excel的计算引擎。然而,我想说,一般来说,重用一个工作解决方案比重新实现它要好。有两种不同版本的东西打算做同样的工作,这会导致以后的维护头疼。事实上,这也是我的直觉。尤其是核心分析似乎被拉了过来,改变了很多。用一个复杂的Excel文件研究完全相同的问题。进展如何?我很喜欢古玩。谢谢你的想法,还有古玩清单。我将把Excel支持的函数列表交给分析表的作者,看看他们对它的看法。如果它更像是一个静态的东西,那么用PHP编写代码是有意义的,但到目前为止,这不是我们的经验——这是一个不断变化和发展的分析。“慢”的真正含义也是一个很好的观点,这在很大程度上取决于未来的数据量。目前我不认为速度太慢会是个大问题。更新:对这方面的进一步研究使我得出结论,在PHPExcel中缺乏对数组公式的支持,正如您强调的马克所说,在这种情况下,将是一个相当大的问题。我们得到的Excel表格充分利用了数组。我会继续搜索…谢谢Martin,事实上,我可以看到PHP处理分析直接将“excel”层从处理过程中移除。我们面临的一个问题是,做分析的人都是非常优秀的人,整个过程都围绕着他们的电子表格旋转,而且总是如此。正是这种频繁的变化让我们在这里挠头。我们害怕在PHP中复制核心分析的不断变化。我想知道是否有更基本的方法从excel表格中提取数学,或者用其他方式定义数学。