1

roo gem を使用して Excel (xlsx) ファイルを解析しています。ただし、ファイル (ワークブック) には常にいくつかの空のシートがあります。シートが空かどうかをrooで確認する方法はありますかnil?

アップデート

wb = Roo::Excelx.new 'chapter_data.xlsx'

    wb.sheets.each do |sheet|
      wb.default_sheet = sheet
      unless wb.nil?
       code.....
      end
   end

wb.nil?動作しません。false を返します。

更新 この問題を処理できた唯一の方法は、メソッドなしエラーをレスキューすることです。シートが空かどうかを確認するより良い方法を探して、このように処理するのは好きではありません。

begin
   header_row = wb.row(1)
 rescue NoMethodError => err
   # do nothing, this sheet is empty can't find a way to check if it is empty pos
 end
4

2 に答える 2

7

シートが空かどうかを確認する最良の方法を考え出しました。

wb = Roo::Excelx.new 'chapter_data.xlsx'

wb.sheets.each do |sheet|
  wb.default_sheet = sheet
    if wb.first_row
      code.....
    end
end

wb.first_rowは、最初の空でない行のインデックスを返します。

于 2013-04-18T16:23:59.660 に答える
0

を使用せずにこれを確認する方法を理解できる唯一の方法rescueは、次のことを行うことでした

unless wb.to_s == 'nil'
  code......
end

nil定期点検ができなかったのはばかげています。しかし、これは機能します。

于 2013-04-17T16:15:26.880 に答える