2010-11-09 153 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

相關問題