2

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

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

我们正在寻求创建一个基于网络服务器的自动化系统,可以上传原始数据 Excel 文件并执行分析,并生成报告。

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

我们的想法是分析(来自第三方)相当复杂,因此在 PHP 中复制需要大量的拆解,其次,分析的部分内容经常被第三方调整,这意味着新版本的Excel 会定期提供给我们。

我可以想象使用 PHPExcel 做这样的事情,在内存中创建工作表并将原始数据合并为第二个工作表,然后读出计算结果,但这是否现实 - 会不会太慢 - 或者根本不起作用我是怎么想象的?

任何想法将不胜感激。

4

2 回答 2

5

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

  • 并非所有 Excel 函数都得到完全支持(PHPExcel 文档中提供了一个列表,但我认为现在支持 356 个函数中的 316 个)
  • BIFF (.xls) 工作簿不支持分析工具包中的 Excel 函数;虽然他们将使用 OfficeOpenXML (xlsx) 工作簿
  • 不支持用户自定义函数
  • 不支持宏和其他 VB 代码
  • 尚不支持数组公式(这是计划在年底开始重写计算引擎的重要部分)
  • 不支持单元格引用的 R1C1 格式

它相对较慢(需要重写的部分原因)。您当然可以编写 PHP 代码来更有效地执行您需要的公式,因为您可以根据您的特定要求编写代码。PHPExcel会不会太慢?只有您可以确定“太慢”的实际含义。

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

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

于 2012-09-28T09:25:41.760 回答
0

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

于 2012-09-28T09:28:46.013 回答