2015-06-01 20 views
10

是的,Koogra只讀。 EPPlus僅支持.xlsx,並且在邊緣情況下是buggy。截至2015年,關於NPOI,EPPlus和Koogra的常識是什麼?

  • 還有什麼人應該知道他們之間的選擇?
  • 其中之一是否比其他人慢?
  • NPOI似乎很複雜,並且是一個Java端口,所以它值得使用 ?
  • 是否應該使用EPPlus for .xlsx和NPOI for .xls?
  • 今天對他們的一般瞭解是什麼?

回答

7
  1. Jet/ACE OLE DB無論是讀表爲串,或鍵入列,所以你要麼失去的數字精度,或者你必須在第一行頭。因此,他們應該避免。
  2. 沒有庫支持XLS B
  3. 速度。
    • 對於一個大的XLS,讀取爲NPOI時間:JetKoograEDR爲14:8:7:5。
    • 對於相同XLS X,時間爲EPPlusNPOIKoograEDR是52:36:20:16。
    • 對於包含多個標籤的相對較小的文件,EPPlus可能比EDR快一點。
  4. 錯誤(#DIV/0!,#VALUE!)等
    • EDRKoogra不明確支持的錯誤。 EDR將它們視爲平常字符串,Koogra - 作爲空白單元格。
    • NPOIEPPlus做的。
  5. Koogra讀取日期爲[OLE日期]數字,它們與實數無法區分。此外,它有時會讀取有許多小數位數字的數字。 EDR得到這個罰款。所以,不要Koogra
  6. NPOI很複雜,5個4 MB的dll。 KoograEDR是簡單的,200 KB和兩個dll(它們自己和zip)。
  7. EDR作爲IDataReader工作,所以它依次讀取數據。它也有內置函數來獲取DataSet。隨着順序閱讀,你只能通過工作簿中的第一張紙。 Koogra支持對單元格和工作表的隨機訪問。
  8. EDR基於SharpZip,Koogra基於Ionic.Zip。前者允許從.zip a Stream中打開一個文件,這對該項目的其他部分很有幫助。

我沒有看過的NPOI寫作方面,所以無需區分錯誤,我會EPPlus去的.xlsx與EDR讀取.xls的。

+0

爲什麼EPPlus對於.xlsx如果EDR讀取速度更快,正如您在3中所說的那樣? – titol

+1

@titol嗯,因爲我已經測試過了,並且還因爲非常大的文件(大約100兆字節)EDR更快。對於大約2兆字節的較小文件,EPPlus速度更快。它只是起作用,您不必將EDR的DataSet包裝到自己的類似Excel的數據模型中。 –

+0

['Koogra'](https://sourceforge.net/projects/koogra/)似乎沒有維護。 – xmedeko

相關問題