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 文档中第一列的字体样式更改为粗体。如何禁用此选项?的主要内容,如果未能解决你的问题,请参考以下文章