红宝石 Roo 工作簿每行工作表

问题描述 投票:0回答:2

正如其他帖子中所述,

roo
gem
有一些复杂的文档,我不知道如何迭代
xlsx
workbook
sheets
,然后每个
sheet
' s 行。

袋鼠宝石

迭代每个

sheet
只会得到
sheet
的名称,而不是对
sheet
本身的引用。所以我必须声明一下。仍然无法遍历所有
rows

s = '/Users/user3/Desktop/departments.xlsx'
a = Roo::Spreadsheet.open(s)
sheets = a.sheets.reverse

sheets.each_with_index do |index, i|
  sheet = a.sheet(index)
  sheet.each_row do|row|
    puts row
  end
end

roo
文档中的其他示例假设
default sheet
文件中有一个
workbook
和一张工作表。不是我的情况,所以很快就会变得混乱。

如何遍历每张表,然后遍历每一行,以进行测试并包含到我的分析中?我正在使用的电子表格有一个空白列和许多行,以及一些艺术品......典型的办公室东西。这些人不是数据人。绕过他们在电子表格中的“创造力”是通过迭代和测试每一行,然后剥离空白单元格来完成的。

任何有洞察力的人都会真正感激。

ruby iteration roo
2个回答
0
投票

您应该将工作表名称传递给

sheet
方法,该方法声明:Roo::Base#sheet

示例

file = 'xxx/xxx.xlsx' # your file path
wb = Roo::Spreadsheet.open(file, extension: :xlsx)
sheet_names = wb.sheets # all sheet names in this workbook

sheet_names.each do |sheet_name|
  curr_sheet = wb.sheet(sheet_name) # change default sheet

  curr_sheet.each_row_streaming do |row|
     # do something 
  end
end

-1
投票

已解决:使用

Creek
gem
。感谢@Rajagopalan为此。

© www.soinside.com 2019 - 2024. All rights reserved.