module RubyXL::LegacyWorkbook

def write(filepath = @filepath)

filepath of xlsx file (including file itself)
def write(filepath = @filepath)
  extension = File.extname(filepath)
  unless %w{.xlsx .xlsm}.include?(extension)
    raise "Only xlsx and xlsm files are supported. Unsupported extension: #{extension}"
  end
  dirpath  = File.dirname(filepath)
  temppath = File.join(dirpath, Dir::Tmpname.make_tmpname([ File.basename(filepath), '.tmp' ], nil))
  FileUtils.mkdir_p(temppath)
  zippath  = File.join(temppath, 'file.zip')
  ::Zip::File.open(zippath, ::Zip::File::CREATE) { |zipfile|
    [ Writer::ContentTypesWriter, Writer::RootRelsWriter, Writer::CoreWriter,
      Writer::ThemeWriter, Writer::WorkbookWriter, Writer::StylesWriter
    ].each { |writer_class| writer_class.new(self).add_to_zip(zipfile) }
    calculation_chain && calculation_chain.add_to_zip(zipfile)
    shared_strings_container && shared_strings_container.add_to_zip(zipfile)
    document_properties.add_to_zip(zipfile)
    relationship_container.workbook = self
    relationship_container.add_to_zip(zipfile)
    [ @media, @external_links, @external_links_rels,
      @drawings, @drawings_rels, @charts, @chart_rels,
      @printer_settings, @worksheet_rels, @chartsheet_rels, @macros ].each { |s| s.add_to_zip(zipfile) }
    @worksheets.each { |sheet| sheet.add_to_zip(zipfile) }
  }
  FileUtils.mv(zippath, filepath)
  FileUtils.rm_rf(temppath) if File.exist?(filepath)
  return filepath
end