# File lib/spreadsheet/worksheet.rb, line 363
   def format_row(row, height=nil, format=nil, hidden=false, level=0)
      unless row.kind_of?(Range) || row.kind_of?(Integer)
         raise TypeError, 'row must be an Integer or Range'
      end
      
      if hidden.nil? || hidden == false
         hidden = 0
      end

      record = 0x0208 # record identifier
      length = 0x0010 # number of bytes to follow

      col_first = 0x0000 # first defined column
      col_last  = 0x0000 # last defined column
      irwmac    = 0x0000 # used by Excel to optimize loading
      reserved  = 0x0000 # reservered
      grbit     = 0x0000 # option flags
      xf_index  = nil

      grbit |= level
      if hidden > 0
         grbit |= 0x0020
      end
      grbit |= 0x0040 #unsynched
      grbit |= 0x0100

      @outline_row_level = level if level > @outline_row_level

      if format.nil?
         xf_index = 0x0F
      else
         xf_index = format.xf_index
         grbit |= 0x80
      end

      if height.nil?
         height = 0xff
      else
         height = height * 20
      end

      row = row..row if row.kind_of?(Fixnum) # Avoid an if..else clause :)
      row.each{ |r|
         header = [record, length].pack("vv")
         fields = [r,col_first,col_last,height,irwmac,reserved,grbit,xf_index]
         data = fields.pack("vvvvvvvv")

         @row_formats[r] = format if format
         append(header + data)
      }
   end