Ruby 使用电子表格gem获取电子表格行数

Ruby 使用电子表格gem获取电子表格行数,ruby,excel,count,row,spreadsheet,Ruby,Excel,Count,Row,Spreadsheet,以下是我当前的工作代码: require 'csv' require 'spreadsheet' folder_to_analyze = ARGV.first folder_path = File.join(Dir.pwd, folder_to_analyze) unless File.directory?(folder_path) puts "Error: #{folder_path} no es un folder valido." exit end def get_csv_f

以下是我当前的工作代码:

require 'csv'
require 'spreadsheet'

folder_to_analyze = ARGV.first
folder_path = File.join(Dir.pwd, folder_to_analyze)

unless File.directory?(folder_path)
  puts "Error: #{folder_path} no es un folder valido."
  exit
end

def get_csv_file_paths(path)
  Dir.glob(path + '/**/*.csv').each do |f|
    yield f
  end
end

def get_xls_file_path(path)
  Dir.glob(path + '/**/*.xls').each do |f|
    yield f
  end
end

csv_files = []
excel_files = []
get_csv_file_paths(folder_path) { |f| csv_files << f }
get_xls_file_path(folder_path) { |f| excel_files << f }

puts "Se encontro #{csv_files.length + excel_files.length} archivos para procesar."

puts '==========================================='
puts 'Archivos CSV:'
puts '==========================================='
csv_files.each do |f|
  count = IO.readlines(f).size
  puts "Archivo: #{File.basename(f)} - Correos: #{count}"
end

puts '==========================================='
puts 'Archivos Excel:'
puts '==========================================='
Spreadsheet.client_encoding = 'UTF-8'
excel_files.each do |f|
  count = 0

  book = Spreadsheet.open f
  book.worksheets.each do |sheet|
    sheet.each do |row|
     count = count + 1
    end
  end

  puts "Archivo: #{File.basename(f)} - Correos: #{count}"
end
需要“csv”
需要“电子表格”
文件夹_to_analyze=ARGV.first
folder_path=File.join(Dir.pwd,folder_to_analyze)
除非是File.directory?(文件夹路径)
放置“错误:{folder_path}无es un folder valido。”
出口
结束
def get_csv_文件_路径(路径)
目录glob(路径+'/***.csv')。每个都有| f|
产量f
结束
结束
def get_xls_文件_路径(路径)
目录glob(路径+'/***/.xls')。每个都有| f|
产量f
结束
结束
csv_文件=[]
excel_文件=[]

获取csv文件路径(文件夹路径){| f | csv文件无需遍历图纸的行,只需按如下方式调用每张图纸上的计数:

excel_files.each do |f|
  count = 0

  book = Spreadsheet.open f
  book.worksheets.each do |sheet| 
     count += sheet.count
  end

  puts "Archivo: #{File.basename(f)} - Correos: #{count}"
end

无需迭代工作表的行,只需按如下方式调用每个工作表上的计数:

excel_files.each do |f|
  count = 0

  book = Spreadsheet.open f
  book.worksheets.each do |sheet| 
     count += sheet.count
  end

  puts "Archivo: #{File.basename(f)} - Correos: #{count}"
end