2009-10-07 49 views
1

我有一個Ruby + Merb web應用程序需要快速估算(或準確計算)電子表格有多少行。它接受roo庫支持的所有格式,包括.xls,.xlsx,.ods和基於文本的格式(如CSV和TSV)。快速估算Excel文件中的行數

CSV/TSV是方便,快捷:

`cat #{filepath} | dos2unix | wc -l`.to_i 

但是,使用Roo的圖書館可能會很慢大文件:

e = Excel.new(filepath) 
e.last_row 

我用Excel文件格式的經驗是零,所以我正在呼籲SO質量問題:如何僅使用Ruby和/或標準UNIX程序嘗試估算XLS,XLSX或ODS文件包含的行數?我的目標是能夠在1.5秒內處理5MB文件(給出或採取各種硬件)。

回答

1
+0

如果我理解正確,roo實際上在引擎蓋下使用了Parseexcel。 無論是哪種情況,問題是在大型Excel文件(大於幾百KB)中讀取都會花費太多時間,至少在Ruby中。我想解決方案是估計行數而不正確地讀取和解析文件 - 可能通過grep查找二進制文件格式的行分隔符或標識符。 – Tyson 2009-10-08 01:15:48

+0

對不起,除此之外,我能想到的唯一辦法是檢查xls文件格式http://www.wotsit.org/ – Jacob 2009-10-08 01:18:29

1

我正在使用spreadsheet寶石,請給它一個鏡頭。

+0

roo內部使用電子表格。 – 2009-12-09 17:40:18