2010-07-22 4 views
13

Ruby를 사용하여 Excel 스프레드 시트 파일을 읽으려고하지만 파일 내용을 읽지 않습니다.Ruby를 사용하여 Excel 스프레드 시트의 내용을 읽으려면 어떻게해야합니까?

[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 

나는 파일의 실제 콘텐츠를해야합니다

그것은 다음 나에게주고 내 스크립트

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 

입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

새 코드를 작성한 것 같아서 경고 다음과 같이 'ParseExcel' 라이브러리를 사용하는 것이 좋습니다. 내가 그 중 하나를 사용하지는 않았지만, deprecated 기능에 새로운 것을 구축하는 것은 나에게 나쁜 생각으로 보입니다. –

+0

왜 콘텐츠를 표시하고 있지 않습니다. – Pavunkumar

답변

20

그것은 누구의 클래스 Spreadsheet::Excel::Row이다 효과적으로 엑셀 Range이며이 Enumerable에서 포함 또는 적어도 예를 들어, 일부 열거 행동, #each를 노출하거나 것을, row 것 같습니다. '내가 인수를 괄호에 한

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 

주, 요즘 일반적으로 좋습니다, 당신 않는 한 필요하지 않은 세미콜론을 제거 :

그래서 당신은이 같은 스크립트 뭔가를 다시 작성할 수 한 줄에 여러 문장을 다시 써야합니다 (거의하지 말아야 할 경우).

그것은 아마 더 큰 스크립트에서 숙취,하지만 내가 코드에서 booksheet1 변수가 정말 필요하지 않습니다 주어진 지적 것이고, Spreadsheet#open이 블록을 소요, 그래서 더 관용적 루비 버전이있을 수 있습니다

+0

엑셀 시트의 행 수를 계산하는 방법을 알려줄 수 있습니다. – khan

0

1 행 파일입니까? 당신이 필요 그렇다면 :

puts row[0]; 
+0

그것은 1000 라인 파일입니다 ... 난 그냥 첫 번째 레코드를 확인 .... – Pavunkumar

4

나는 그것을 따라하기 매우 쉽습니다, 그냥 require 'spreadsheet'

당신이 guide을 읽고, 당신은 parseexcel을 필요로 할 필요가 있다고 생각하지 않습니다.

+0

링크가 작동하지 않습니다. –

+1

GitHub를 가리 키도록 링크를 업데이트했습니다. rubyforge가 순간에 내려가는 것 같습니다. –