문제

내가 하려고 읽 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

가의 실제 내용 파일입니다.무엇이 잘못된 것입니까?

도움이 되었습니까?

해결책

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

다른 팁

ParseExcel을 요구할 필요가 없다고 생각하지 않습니다. require 'spreadsheet'

가이드 쉽게 쉽게 읽어야합니다.팔로우.

그것은 한 줄 파일입니까?그렇다면 필요한 경우 :

puts row[0];
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top