def add_row(values=[], options={})
      row = Row.new(self, values, options)
      update_column_info row, options.delete(:widths)
      yield row if block_given?
      row
    end
Adds a row to the worksheet and updates auto fit data.
@example - put a vanilla row in your spreadsheet
ws.add_row [1, 'fish on my pl', '8']

@example - specify a fixed width for a column in your spreadsheet
# The first column will ignore the content of this cell when calculating column autowidth.
# The second column will include this text in calculating the columns autowidth
# The third cell will set a fixed with of 80 for the column.
# If you need to un-fix a column width, use :auto. That will recalculate the column width based on all content in the column

ws.add_row ['I wish', 'for a fish', 'on my fish wish dish'], :widths=>[:ignore, :auto, 80]

@example - specify a fixed height for a row
ws.add_row ['I wish', 'for a fish', 'on my fish wish dish'], :height => 40

@example - create and use a style for all cells in the row
blue = ws.styles.add_style :color => "#00FF00"
ws.add_row [1, 2, 3], :style=>blue

@example - only style some cells
blue = ws.styles.add_style :color => "#00FF00"
red = ws.styles.add_style :color => "#FF0000"
big = ws.styles.add_style :sz => 40
ws.add_row ["red fish", "blue fish", "one fish", "two fish"], :style=>[red, blue, nil, big] # the last nil is optional


@example - force the second cell to be a float value
ws.add_row [3, 4, 5], :types => [nil, :float]

@example - use << alias
ws << [3, 4, 5], :types => [nil, :float]

@see Worksheet#column_widths
@return [Row]
@option options [Array] values
@option options [Array, Symbol] types
@option options [Array, Integer] style
@option options [Array] widths each member of the widths array will affect how auto_fit behavies.
@option options [Float] height the row's height (in points)