首页 > 解决方案 > xlsxwriter 将 Excel 文档中第一列的字体样式更改为粗体。如何禁用此选项?

问题描述

这两个 openpyxl 之一,xlsxwriter 在将 csv 文件导出到 excel 时会自动将字体样式更改为粗体。它只发生在第一列。你知道为什么以及如何克服这种行为吗?

import pandas as pd
import openpyxl
import xlsxwriter
from pandas import DataFrame
import time
from glob import iglob

 data = pd.read_csv(next(iglob('*.csv')))
 data = data.sort_values(by=['A'], ascending=False)
 data.to_excel('out.xlsx',engine='xlsxwriter', index=False)

标签: pythonpandas

解决方案


您可以将自定义pd.ExcelWriter实例传递给pd.DataFrame.to_excel()标题列并显式禁用任何样式:

import pandas as pd

df = pd.DataFrame(data={'col_a': [1,2,3,4], 'col_b': [5,6,7,8]})

with pd.ExcelWriter('out.xlsx') as writer:
    df.to_excel(writer, index=False)

    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']

    header_format = workbook.add_format({
        'bold': False,
        'border': False})

    for col_num, value in enumerate(df.columns.values):
        worksheet.write(0, col_num, value, header_format)

编辑 [pandas 0.24 不再支持]:或者,您可以重置所有 pandas 默认标题样式。之后,df.to_excel()像往常一样打电话。

import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None

推荐阅读