# File lib/spreadsheet/excel/writer/worksheet.rb, line 657 def write_row row # Offset Size Contents # 0 2 Index of this row # 2 2 Index to column of the first cell which # is described by a cell record # 4 2 Index to column of the last cell which is # described by a cell record, increased by 1 # 6 2 Bit Mask Contents # 14-0 0x7fff Height of the row, in twips = 1/20 of a point # 15 0x8000 0 = Row has custom height; # 1 = Row has default height # 8 2 Not used # 10 2 In BIFF3-BIFF4 this field contains a relative offset to # calculate stream position of the first cell record for this # row (➜ 5.7.1). In BIFF5-BIFF8 this field is not used # anymore, but the DBCELL record (➜ 6.26) instead. # 12 4 Option flags and default row formatting: # Bit Mask Contents # 2-0 0x00000007 Outline level of the row # 4 0x00000010 1 = Outline group starts or ends here # (depending on where the outline # buttons are located, see WSBOOL # record, ➜ 6.113), and is collapsed # 5 0x00000020 1 = Row is hidden (manually, or by a # filter or outline group) # 6 0x00000040 1 = Row height and default font height # do not match # 7 0x00000080 1 = Row has explicit default format (fl) # 8 0x00000100 Always 1 # 27-16 0x0fff0000 If fl = 1: Index to default XF record # (➜ 6.115) # 28 0x10000000 1 = Additional space above the row. # This flag is set, if the upper # border of at least one cell in this # row or if the lower border of at # least one cell in the row above is # formatted with a thick line style. # Thin and medium line styles are not # taken into account. # 29 0x20000000 1 = Additional space below the row. # This flag is set, if the lower # border of at least one cell in this # row or if the upper border of at # least one cell in the row below is # formatted with a medium or thick # line style. Thin line styles are # not taken into account. height = row.height || ROW_HEIGHT opts = row.outline_level & 0x00000007 opts |= 0x00000010 if row.collapsed? opts |= 0x00000020 if row.hidden? opts |= 0x00000040 if height != ROW_HEIGHT if fmt = row.default_format xf_idx = @workbook.xf_index @worksheet.workbook, fmt opts |= 0x00000080 opts |= xf_idx << 16 end opts |= 0x00000100 height = if height == ROW_HEIGHT (height * TWIPS).to_i | 0x8000 else height * TWIPS end # TODO: Row spacing data = [ row.idx, row.first_used, row.first_unused, height, opts, ].pack binfmt(:row) write_op opcode(:row), data end