code: def write(file, opts = {})
        opts = {r: true, c: true}.merge(opts)
  
        if opts[:r]
          construct_row = -> row,i { row.insert(0,row_labels[i]).join(SEMICOLON) }
        else
          construct_row = -> row,i { row.join(SEMICOLON) }
        end
        
        File.open(file, 'w') do |out|
          if opts[:c]
            if opts[:r]
              out.puts "#{SEMICOLON}#{col_labels.join(SEMICOLON)}"
            else
              out.puts col_labels.join(SEMICOLON) 
            end
          end
  
          rows.each_with_index do |row, i| 
            out.puts construct_row.call row, i
          end
        end 
      end
docs: Writes spread sheet to a file separated with ';'. Accepts two boolean
   arguments to indicate whether the row and column labels should be saved
   along with the spread sheet's labels
   r:: when true row labels will be saved, default is true
   c:: when true column labels will be saved, default is true