xlsxwriter 将 Excel 文档中第一列的字体样式更改为粗体。如何禁用此选项?

Posted

技术标签:

【中文标题】xlsxwriter 将 Excel 文档中第一列的字体样式更改为粗体。如何禁用此选项?【英文标题】:xlsxwriter changes the font style to bold for the first column within an excel document. How to disable this option? 【发布时间】:2019-10-08 16:04:18 【问题描述】:

这两个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)

【问题讨论】:

只是为了澄清一下,Pandas 通过 openpyxl 或 xlsxwriter 将粗体格式添加到标题中。要指定您自己的标头,请参阅此示例:xlsxwriter.readthedocs.io/… 【参考方案1】:

您可以将自定义 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 不再支持]:或者,您可以reset all pandas default header styling。之后,像往常一样拨打df.to_excel()

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

【讨论】:

Pandas 0.24 不再支持 pandas.io.formats.excel.header_style = None。现在,关于您的代码,我的 csv 文件可能包含 2 到 30 列,我不知道它们的名称。如何将其翻译成 python? @Jan Trienes 不建议使用 header_style = None 解决方法,因为格式的位置在不同版本的 pandas 中发生了变化。示例代码中的enumerate 方法更可取。另见:xlsxwriter.readthedocs.io/… @bogdann 谢谢!不过,涉及workbook.add_format 的解决方案应该仍然有效。 “我的 csv 文件可能包含 2 到 30 列,我不知道它们的名称是什么意思?” 对不起,我知道了!现在运行完美。谢谢! @bogdann 很高兴听到!如果有帮助,请考虑接受答案:)

以上是关于xlsxwriter 将 Excel 文档中第一列的字体样式更改为粗体。如何禁用此选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何将excel中某一列数据按照指定顺序排序

004Python xlsxwriter模块

python使用xlsxwriter模块生成和处理Excel文档

DT::DataTables 中第一列的黑色背景和白色字体

excel中能否将一列数据分成多列?

css让表格第一列和第一行固定