如何使用 xlsxwriter 格式化索引列?

A. *_*rat 8 python excel pandas xlsxwriter

我正在使用xlsxwriterset_column函数来格式化我的 excel 输出中的列。

但是,当应用于索引列(或多索引情况下的索引列)时,格式似乎被忽略了。

我找到了一种解决方法,到目前为止是通过reset_index引入一个假索引,然后将index=False传递给 to_excel 函数,但是多索引的良好合并功能也将消失。

有任何想法吗?

import pandas as pd
import numpy as np

from Config import TEMP_XL_FILE

def temp():
    ' temp'
    pdf = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))
    pdf.set_index('A', drop=True, inplace=True)
    writer = pd.ExcelWriter(TEMP_XL_FILE, engine='xlsxwriter')
    pdf.to_excel(writer, 'temp')
    workbook = writer.book
    worksheet = writer.sheets['temp']
    tempformat = workbook.add_format({'num_format': '0%', 'align': 'center'})
    worksheet.set_column(-1, 3, None, tempformat)
    writer.save()

if __name__ == '__main__':
    temp()
Run Code Online (Sandbox Code Playgroud)

Bru*_*rut 3

pandasExcelWriter会覆盖XlsxWriter索引列中的格式。为了防止这种情况,请将 pandas 更改header_styleNone

header_style = {"font": {"bold": True},
                "borders": {"top": "thin",
                            "right": "thin",
                            "bottom": "thin",
                            "left": "thin"},
                "alignment": {"horizontal": "center",
                              "vertical": "top"}} 
Run Code Online (Sandbox Code Playgroud)

要做到这一点:

import pandas.io.formats.excel

pandas.io.formats.excel.header_style = None
Run Code Online (Sandbox Code Playgroud)

也可以看看