如何在格式化用户定义的 headers XLSXWriter 和 Pandas 时删除索引列

How to remove index column when formatting user defined headers XLSXWriter and Pandas

我能够为 header 行应用正确的格式,但我的数据开头有一个空白索引列,即使我将索引设置为 False。如何在仍然应用 header 格式的同时删除该索引列?

    writer = pd.ExcelWriter(r'L:\Test.xlsx', 
                    engine='xlsxwriter',
                    datetime_format='mm/dd/yyyy'
                    )

    data3.to_excel(writer, index=False, sheet_name='TEST', startrow=1, 
    header = False)

    pandas.io.formats.excel.header_style = None

    #Get the xlsxwriter objects from the dataframe writer object.
    workbook  = writer.book
    worksheet = writer.sheets['TEST']

    ##Autofilter
    worksheet.autofilter('A1:W5000')

    #Add a header format.
    header_format = workbook.add_format({
        'font_color': 'white',
        'text_wrap': True,
        'font_name': 'Calibri',
        'font_size': 11,
        'fg_color': '#44546a'})

    # Write the column headers with the defined format.
    for col_num, value in enumerate(data3.columns.values):
        worksheet.write(0, col_num + 1, value, header_format)

    # Close the Pandas Excel writer and output the Excel file.
    writer.save()

看起来仍然像下图,我希望 A 列而不是 B 列作为起点:

不正确: Incorrect

正确: Correct

您需要将 worksheet.write() 中的列索引从 col_num +1 更改为 col_num。像这样:

import pandas
from datetime import datetime

data3 = pandas.DataFrame({'Dates': [datetime(2019, 1, 1, 11, 30, 55),
                                    datetime(2019, 1, 2, 1,  20, 33),
                                    datetime(2019, 1, 3, 11, 10    ),
                                    datetime(2019, 1, 4, 16, 45, 35),
                                    datetime(2019, 1, 5, 12, 10, 15)]})

writer = pandas.ExcelWriter('test.xlsx', 
                            engine='xlsxwriter',
                            datetime_format='mm/dd/yyyy')

data3.to_excel(writer, index=False, sheet_name='TEST', 
               startrow=1, header = False)

pandas.io.formats.excel.header_style = None

#Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['TEST']

worksheet.set_column('A:A', 20)

#Add a header format.
header_format = workbook.add_format({
    'font_color': 'white',
    'text_wrap': True,
    'font_name': 'Calibri',
    'font_size': 11,
    'fg_color': '#44546a'})

# Write the column headers with the defined format.
for col_num, value in enumerate(data3.columns.values):
    worksheet.write(0, col_num, value, header_format)

# Close the Pandas Excel writer and output the Excel file.
writer.save()

输出: