docs: def make_worksheet_data(headers, worksheet):
      """
      Make data from worksheet
      """
      data = []
      row_idx = 1
      while row_idx < worksheet.nrows:
          cell_idx = 0
          row_dict = {}
          while cell_idx < worksheet.ncols:
              cell_type = worksheet.cell_type(row_idx, cell_idx)
              if cell_type in VALID_CELL_TYPES:
                  cell_value = worksheet.cell_value(row_idx, cell_idx)
                  try:
                      if cell_type == 2 and cell_value.is_integer():
                          cell_value = int(cell_value)
                      row_dict[headers[cell_idx]] = cell_value
                  except KeyError:
                      try:
                          column = ascii_uppercase[cell_idx]
                      except IndexError:
                          column = cell_idx
                          puts("There is no header for cell with value '{0}' in column '{1}' of '{2}'" .format(
                              cell_value, column, worksheet.name
                          ))
              cell_idx += 1
          data.append(row_dict)
          row_idx += 1
  
      # Magic key handling
      if 'key' in headers.values():
          keyed_data = {}
          for row in data:
              if 'key' in row.keys():
                  key = slughifi(row['key'])
                  if keyed_data.get(key):
                      puts("There is already a key named '{0}' with value "
                             "'{1}' in '{2}'. It is being overwritten with "
                             "value '{3}'.".format(key,
                                     keyed_data.get(key),
                                     worksheet.name,
                                     row))
  
                  # Magic values worksheet
                  if worksheet.name == "values":
                      value = row.get('value')
                      if value not in ("", None):
                          keyed_data[key] = value
                  else:
                      keyed_data[key] = row
  
          data = keyed_data
  
      return data