어떻게 내가 읽고 내용의 Excel 스프레드시트를 사용하여 루비?
-
27-09-2020 - |
문제
내가 하려고 읽 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 인수하는 일반적으로 좋습이 일,그리고 제거하는 세미콜론,필요하지 않은하지 않는 한 당신이 쓰는 여러 문 라인에서(당신이하지 않는 경우-이제까지)않습니다.
그것은 아마도 숙취에서 더 큰 스크립트,하지만 저는 코드에서는 주어 book
고 sheet1
변수는 실제로 필요하진 않지만,그 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];
. 제휴하지 않습니다 StackOverflow