code: def obj_to_csv(self, file_path=None, quote_everything=False,
                     space_columns=True, quote_numbers=True):
          
          list_of_list, column_widths = self.get_data_and_shared_column_widths(
              data_kwargs=dict(quote_numbers=quote_numbers,
                               quote_everything=quote_everything,
                               safe_str=self._excel_cell),
              width_kwargs=dict(padding=0))
          if space_columns:
              csv = [','.join([cell.ljust(column_widths[i])
                               for i, cell in enumerate(row)])
                     for row in list_of_list]
          else:
              csv = [','.join(row) for row in list_of_list]
  
          if os.name == 'posix':
              ret = '\r\n'.join(csv)
          else:
              ret = '\n'.join(csv)
  
          self._save_file(file_path, ret)
          return ret
docs: This will return a str of a csv text that is friendly to excel
          :param file_path:        str to the path
          :param quote_everything: bool if True will quote everything if it needs
                                   it or not, this is so it looks pretty in excel.
          :param quote_numbers:    bool if True will quote numbers that are
                                   strings
          :param space_columns:    bool if True it will align columns with spaces
          :return: str