Вы не можете сделать это с to_excel
. Обходной путь - открыть сгенерированный файл xlsx и добавить туда таблицу с openpyxl :
import pandas as pd
df = pd.DataFrame({'Col1': [1,2,3], 'Col2': list('abc')})
filename = 'so58326392.xlsx'
sheetname = 'mySheet'
with pd.ExcelWriter(filename) as writer:
if not df.index.name:
df.index.name = 'Index'
df.to_excel(writer, sheet_name=sheetname)
import openpyxl
wb = openpyxl.load_workbook(filename = filename)
tab = openpyxl.worksheet.table.Table(displayName="df", ref=f'A1:{chr(len(df.columns)+64)}{len(df)+1}')
wb[sheetname].add_table(tab)
wb.save(filename)
Обратите внимание, что все заголовки таблицы должны быть строками. Если у вас есть безымянный индекс (что является правилом), первая ячейка (A1) будет пустой, что приведет к повреждению файла. Чтобы избежать этого, присвойте своему индексу имя (как показано выше) или экспортируйте фрейм данных без индекса, используя:
df.to_excel(writer, sheet_name=sheetname, index=False)