xlsxwriter / Первый столбец не выравнивается слева

#python #pandas #web-scraping #scrapy #xlsxwriter

Вопрос:

Возникла проблема с выравниванием первого столбца слева. Не знаю, что здесь не так. Форматирование, похоже, работает для верхней строки.

Я просто хочу, чтобы текст первой колонки выровнялся слева.

 def export_to_xlsx(date):  global df  ## CREATE PD DATAFRAME  all_mp_dict = scraper(date)  df = pd.DataFrame(all_mp_dict)   ## WORKSHEET FORMATTING (TOP ROW - YELLOW BG COLOR)  workbook_loc = './mp_excel/mp_data_' date '.xlsx'  writer = pd.ExcelWriter(workbook_loc, engine='xlsxwriter')  df.to_excel(writer, sheet_name=date '_raw')   workbook = writer.book  worksheet = writer.sheets[date '_raw']   header_format = workbook.add_format({  'bold': True,  'text_wrap': True,  'valign': 'top',  'fg_color': '#FFFF00',  'border': 1})   for col_num, value in enumerate(df.columns.values):  worksheet.write(0, col_num 1, value, header_format)   ## WORKSHEET FORMATTING (FIRST COLUMN - ALIGN LEFT)  a_format = workbook.add_format()  a_format.set_align('left')   worksheet.set_column('A:A', 100, a_format)   ## TO_EXCEL  writer.close()  

Ответ №1:

Причина, по которой формат столбца Excel не применяется к первому столбцу фрейма данных, заключается в том, что Pandas уже применил формат полужирного/по центру к ячейке, чтобы выделить значения индекса. В Excel и XlsxWriter формат ячейки переопределяет формат столбца.

Таким образом, вы можете удалить индекс и добавить свой собственный, с его собственным форматом, таким же образом, как вы перезаписываете заголовки столбцов.

Комментарии:

1. Спасибо. У меня была та же проблема с заголовком, и я нашел код, на который вы ссылаетесь, чтобы заставить его работать. Я не мог понять, как сделать то же самое для первого столбца, особенно если нет df.строк?

2. Вы можете использовать df.shape, чтобы получить ограничения по строкам и столбцам для фрейма данных. Альтернативным подходом было бы добавить столбец индекса во фрейм данных, а затем удалить автоматический (и автоматически отформатированный) столбец индекса из экспорта Excel: df.to_excel(writer, sheet_name=date '_raw', index=False)

3. Отлично сработало, спасибо.