2013-05-28 82 views
1

與我相處的麻煩是:我無法找到一個好方法來處理一個具有一定公式的大尺寸excel文件。即: =VLOOKUP($A8,items_item!$A:$Z,16,0) 我已經問了問我的麻煩些天前:Phpexcel calculate formula across sheet page is too slow通過程序訪問大規模excel文件與複雜的公式

我使用之前就是phpExcel.what可惜的方法!當文件更大,公式更多時,內存使用率和效率非常可怕! 任何機構都可以給出一些關於如何使用formula.Any程序語言處理大尺寸excel文件的好建議。任何建議都會讓我倍感欣慰!

附加:也許我上面描述的問題並不清楚。我所做的是提供一個處理用戶提供的excel文件的工具,並通過程序從excel中獲取數據(如果是公式,計算它)。然後將數據導入到其他存儲中,如xml,db。

回答

0

嘗試優化Excel工作表。通常在臨時構建的Excel Sheet中有很大的改進空間。例如,從您發佈的一個公式中,我發現您可以將VLOOKUP中的表從$ A:$ Z限制到更小的值(這取決於表中的所有行)。

+0

是的,馬克·貝克給喜歡你的答案的問題:「Phpexcel計算公式跨越頁紙太慢」。但我所做的是一個爲其他人處理excel文件的工具。我無法確定每個人都可以優化它的Excel配方。什麼讓我非常困擾! – zoorz

+0

感謝您的回答,您的意思是我應該限制公式中的行範圍?但是數據集每天都在增加:(可以給你任何其他建議,再次感謝你! – zoorz

+0

你可以使它自動化(搜索自動範圍)。有一百萬次的性能改進是可能的。 make excel文件並不是編程的東西,你可以幫助他們,其實vlookup是相當快的,但是你在100萬行中搜索 – momobo

0

可能會更快地依賴於一個表的自動擴展功能和查找:

=VLOOKUP($A8,Table1[[Col1]:[Col16]],16,FALSE)

,其中表1是items_item的佔領部分$ A:$ž。

(雖然我沒有測試過這一點)

+0

對不起,我不太明白你的意思。你建議你我應該優化公式? – zoorz

+0

我收集PHP是'貪婪'(嘗試處理所有行而不是僅僅被佔用的行),並且這可能導致緩慢。我懷疑Excel以這種方式工作,但如果它做到了,那麼減小LOOKUP數組的大小可能會有所幫助。可以理解的是,你不想依賴用戶來相應地調整公式,但是在使用表格時,不需要這樣做(當添加新行時,範圍會自動擴展)。因此,您可以指定一個受限制的範圍,並根據需要繼續增加。但是,對於1M左右的行,我沒有嘗試過速度測試。 – pnuts