class Admins::ImportUserExcel < BaseImportXlsx UserData = Struct.new(:student_id, :name, :department_name, :identity, :technical_title, :phone) def read_each(&block) sheet.each_row_streaming(pad_cells: true, offset: 3) do |row| data = row.map(&method(:cell_value))[0..5] block.call UserData.new(*data) end end def school @school ||= begin school_id = sheet.cell(1, 1).to_s.strip school_name = sheet.cell(1, 2).to_s.strip School.find_by(id: school_id, name: school_name) end end def identifier @_identifier ||= sheet.cell(2, 1).to_s.strip end private def check_sheet_valid! raise_import_error('请按照模板格式导入') if school.blank? end def cell_value(obj) obj&.cell_value end end