class RubyXL::Workbook

def before_write_xml

def before_write_xml
  max_sheet_id = worksheets.collect(&:sheet_id).compact.max || 0
  self.sheets = RubyXL::Sheets.new
  worksheets.each { |sheet, i|
    rel = relationship_container.find_by_target(sheet.xlsx_path)
    raise "Worksheet name '#{sheet.sheet_name}' contains forbidden characters" if sheet.sheet_name =~ SHEET_NAME_FORBIDDEN_CHARS
    raise "Worksheet name '#{sheet.sheet_name}' is forbidden" if SHEET_NAME_FORBIDDEN_NAMES.include?(sheet.sheet_name)
    sheets << RubyXL::Sheet.new(:name     => sheet.sheet_name[0..30], # Max sheet name length is 31 char
                                :sheet_id => sheet.sheet_id || (max_sheet_id += 1),
                                :state    => sheet.state,
                                :r_id     => rel.id)
  }
  true
end