Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 求列总数的最简单方法?_Php_Mysql_Excel_Csv - Fatal编程技术网

Php 求列总数的最简单方法?

Php 求列总数的最简单方法?,php,mysql,excel,csv,Php,Mysql,Excel,Csv,我有一个PHP脚本,可以导入多达10个左右不同的CSV文件。每个文件的每一行都包含银行帐户信息,包括余额。将所有CSV数据导入数据库后,我希望通过比较数据库中的总帐户余额和CSV文件的总帐户余额,确保数据正确地进入数据库 我至少看到了几个选择: 手动合计Excel中的所有帐户余额-恶心 写一个PHP脚本来读取每个CSV文件,并合计帐户余额-也很恶心 我希望存在第三种选择。如果我能做一些像这样的事情,那将是令人惊讶的: excel--file=“cd.csv”| sum--column=“E”

我有一个PHP脚本,可以导入多达10个左右不同的CSV文件。每个文件的每一行都包含银行帐户信息,包括余额。将所有CSV数据导入数据库后,我希望通过比较数据库中的总帐户余额和CSV文件的总帐户余额,确保数据正确地进入数据库

我至少看到了几个选择:

  • 手动合计Excel中的所有帐户余额-恶心

  • 写一个PHP脚本来读取每个CSV文件,并合计帐户余额-也很恶心

  • 我希望存在第三种选择。如果我能做一些像这样的事情,那将是令人惊讶的:

    excel--file=“cd.csv”| sum--column=“E”


  • 这显然不是真的,但希望你能理解。使用PHP、MySQL、Linux命令、Excel和/或任何其他工具的组合,有没有一种简单的方法可以做到这一点?

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

    您可能不必“手动”合计帐户余额,如果您可以从应用程序中使用Excel函数,VBA中的Excel公式将是:

    Application.Sum(Range("A:A"))
    
    其中A:A代表A列。

    尝试使用其摘要选项。它将为您提供比您需要的更多的数据,但应该易于使用


    否则,这听起来对Awk很有用。

    为什么你不能用一个公式自动计算excel中的帐户余额,并将其与其余数据一起导出?

    不必为你完成答案,但Awk应该能够解决你的问题:看看以下两篇文章:

    我不是一个能给出解决方案的AWK专家,但也许其他人可以在这里帮助我们


    另一个选项(你也可以考虑YOK)是使用一个类似于

    < P>的一个不同的角度:利用它来将你的CSV文件暴露到MySQL中,然后做一个正常的SQL和。p>
    另请参见:

    u可以将php更改为接受$argv(cli模式)或简单的bash
    total=0;col=9;对于
    cut-d''cd.csv-f$col
    中的i;让总数=$i+$total;完成;echo$total
    ;如果在windows上运行,可以使用PHP中的COM,但他在Linux上运行,看起来我在运行Linux。然而,这并不是说在Windows中自动化某些过程并将结果引入Linux是没有帮助的,我可以做到。这并不理想(我更喜欢完全自动化),但它可能是最简单的解决方案。我喜欢这个想法。我将进一步研究它,看看它是否是一个可行的选项。看起来我将使用
    awk
    。更新:这似乎已经奏效:
    cat file.csv | awk-F“\”*,\“*”{s+=$2}END{print s}
    (总计到第二列。)