Rastreador del sistema de archivos – errores de iteración

Actualmente estoy creando un rastreador de sistema de archivos con el siguiente código:

require 'find' require 'spreadsheet' Spreadsheet.client_encoding = 'UTF-8' count = 0 Find.find('/Users/Anconia/crawler/') do |file| if file =~ /\b.xls$/ # check if filename ends in desired format contents = Spreadsheet.open(file).worksheets contents.each do |row| if row =~ /regex/ puts file count += 1 end end end end puts "#{count} files were found" 

Y estoy recibiendo la siguiente salida: 0 files were found

La expresión regular está probada y es correcta: actualmente la uso en otro rastreador que funciona.

La salida de row.inspect es

#<Spreadsheet::Excel::Worksheet:0x003ffa5d418538 @row_addresses= @default_format= @selected= @dimensions= @name=Sheet1 @workbook=# @rows=[] @columns=[] @links={} @merged_cells=[] @protected=false @password_hash=0 @changes={} @offsets={} @reader=# @ole=# @offset=15341 @guts={} @rows[3]> – ciertamente no hay nada para iterar.

Prueba esto:

 content = Spreadsheet.open(file) sheet = content.worksheet 0 sheet.each do |row| ... 

Como mencionó Diego, debería haber estado iterando sobre los contenidos, ¡realmente aprecio la aclaración! También se debe tener en cuenta que la row debe convertir en una cadena antes de que se lleve a cabo cualquier iteración.

    Intereting Posts