2010-07-22 102 views
13

我正在嘗試使用Ruby讀取Excel電子表格文件,但它沒有讀取文件的內容。如何使用Ruby讀取Excel電子表格的內容?

這是我的腳本

book = Spreadsheet.open 'myexcel.xls'; 
sheet1 = book.worksheet 0 
sheet1.each do |row| 
    puts row.inspect ; 
    puts row.format 2; 
    puts row[1]; 
    exit; 
end 

這是給我下面的:

[DEPRECATED] By requiring 'parseexcel', 'parseexcel/parseexcel' and/or 
      'parseexcel/parser' you are loading a Compatibility layer which 
      provides a drop-in replacement for the ParseExcel library. This 
      code makes the reading of Spreadsheet documents less efficient and 
      will be removed in Spreadsheet version 1.0.0 

#<Spreadsheet::Excel::Row:0xffffffdbc3e0d2 @worksheet=#<Spreadsheet::Excel::Worksheet:0xb79b8fe0> @outline_level=0 @idx=0 @hidden=false @height= @default_format= @formats= []> 
#<Spreadsheet::Format:0xb79bc8ac> 
nil 

我需要得到文件的實際內容。我究竟做錯了什麼?

+0

你似乎在編寫新的代碼,所以我建議按照警告和使用'ParseExcel'庫作爲指示。並不是說我曾經使用過這兩種方法,但是建立新的功能對我來說似乎是一個壞主意。 – 2010-07-22 14:21:39

+0

爲什麼它不顯示內容。 – Pavunkumar 2010-07-22 14:27:42

回答

20

它看起來像row,它的類是Spreadsheet::Excel::Row有效是Excel Range,它要麼包括可枚舉或至少暴露了一些可枚舉的行爲,#each,例如。

所以,你可能重寫你的腳本是這樣的:

require 'spreadsheet'  
book = Spreadsheet.open('myexcel.xls') 
sheet1 = book.worksheet('Sheet1') # can use an index or worksheet name 
sheet1.each do |row| 
    break if row[0].nil? # if first cell empty 
    puts row.join(',') # looks like it calls "to_s" on each cell's Value 
end 

請注意,我parenthesised參數,這是通常建議這些天,並取消了分號,這是沒有必要,除非你」重新寫一條線上的多條語句(你應該很少 - 如果有的話)。

這可能從一個較大的腳本宿醉,但我會指出,在代碼中給出的booksheet1變量不是真的需要,那Spreadsheet#open需要一個塊,所以更地道的Ruby版本可能這樣的事情:

require 'spreadsheet'  
Spreadsheet.open('MyTestSheet.xls') do |book| 
    book.worksheet('Sheet1').each do |row| 
    break if row[0].nil? 
    puts row.join(',') 
    end 
end 
+0

你能告訴我如何計算excel表格的行數。 – khan 2015-06-11 13:14:19

0

它是單行文件嗎?如果是這樣,你需要:

puts row[0]; 
+0

這是1000行文件...我只是檢查第一條記錄.... – Pavunkumar 2010-07-22 14:26:05

4

我不認爲你需要需要ParseExcel的,只是require 'spreadsheet'

你看了guide,它是超級容易。

+0

鏈接不起作用。 – 2014-07-02 09:37:20

+1

我更新了指向GitHub的鏈接。現在看來rubyforge已經下降了 – 2014-07-03 12:35:22

相關問題