2010-11-09 155 views
0

我有一个PHP脚本,最多可导入10个不同的CSV文件。每个文件的每一行都包含银行账户信息,包括余额。将所有CSV数据导入到数据库后,我想通过将数据库中的总帐户余额与CSV文件的总帐户余额进行比较,以确保数据正确无误。最简单的方法来总计列?

我看到至少有几个选项:

  1. 手动总量可达所有的账户余额在Excel中 - 呸。
  2. 编写一个PHP脚本来读取每个CSV文件并累计帐户余额 - 也是恶作剧。
  3. 我希望存在的第三种选择。这将是惊人的,如果我可以这样做:

    excel --file="cd.csv" | sum --column="E"

这显然不是一个真实的东西,但希望你的想法。使用PHP,MySQL,Linux命令,Excel和/或任何其他工具的某种组合,是否有一种简单的方法可以做到这一点?

+0

ü可以改变PHP来接受$的argv(CLI模式)或一个简单的bash'总= 0; col = 9;因为我在'cut -d''cd。csv -f $ col';让总数= $ i + $总;完成; echo $ total'; – ajreal 2010-11-09 20:07:17

回答

0

还没有完成的答案,但AWK应该能够解决你的问题:有一个在这2个帖子:

https://superuser.com/questions/53652/transforming-csv-file-using-sed

Shell command to sum integers, one per line?

我不是AWK专家足以提供解决方案,但也许别人可以帮助我们。

另一种选择(你也可以考虑呸)是使用图书馆一样PHPExcel

+0

看起来我会用'awk'去。 – 2010-11-11 20:07:03

+0

更新:这似乎工作:'cat file.csv | awk -F“\”*,\“*”'{s + = $ 2} END {print s}''(总计第二列) – 2010-11-11 20:24:47

0

您可以使用fgetcsv()迭代CSV文件,将每行转换为一个值数组。您可以累积包含余额的数组元素的值,以在每次迭代中移动,直到获得总和。使用glob获取文件夹中的CSV文件列表。

0

您可能没有为“手动”总量可达账户余额,如果你可以使用Excel函数从您的应用程序,在VBA的Excel公式是:

Application.Sum(Range("A:A")) 

其中A:A是列A.

+0

如果在Windows上运行,可以从PHP使用COM,但他在Linux上运行它似乎 – 2010-11-09 20:11:40

+0

我正在运行Linux。然而,这并不是说在Windows中自动化一些进程然后将结果带入Linux将无济于事。 – 2010-11-09 20:44:39

0

尝试使用CSVFix及其摘要选项。它会为你提供比你需要的更多的数据,但应该很容易使用。

否则,这听起来像是Awk的一个很好的用法。

0

为什么你不能自动地将excel中的账户余额与公式汇总并将其与其余数据一起导出?

+0

我可以那样做。这不太理想(我更喜欢全自动化),但它可能是最简单的解决方案。 – 2010-11-09 20:45:46

0

不同角度的位:请使用MySql CSV engine的暴露你的CSV文件到MySQL,然后做一个正常的SQL和。

参见:The CSV Storage Engine

+0

我喜欢这个想法。我会更多地研究它是否是一个可行的选择。 – 2010-11-09 20:46:12

相关问题