python - 如何在写入 Excel 时格式化数据框
问题描述
我正在尝试在写入 excel 时格式化数据框。
对于 Xlsxwriter:因为我们无法格式化标题。我将标题复制到第一行并尝试更改第一行的格式(我header=False
在写入 excel 时设置)。我需要格式化标题的特定部分。像前 3 个标题是粗体,接下来的三个是红色等。有没有办法设置特定的标题格式?现在我可以为整行或整列做任何事情。我已准备好遍历行和列,但为此我认为我需要使用.write
,这里的问题是.write
我也需要插入一个值,但该值已经可以从 Dataframe 获得。
我如何针对特定单元格(如 A1、A2、A3)进行格式化,以便对其进行不同的格式化。
解决方案
您可以使用以下方式进行自定义格式设置xlsxwriter
:
示例数据框:
id PER Team
0 1 12 OKC
1 2 14 OKC
2 3 11 GSW
有标题的自定义格式化程序:
writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# add custom headers
header_format1 = workbook.add_format({
'bold': True,
'border': 1})
header_format2 = workbook.add_format({
'bold': True,
'fg_color': '#ffcccc',
'border': 1})
#add columns required for each format
column_format1 = ["id"]
column_format2 = ["PER", "Team"]
for col_num, value in enumerate(df.columns.values):
if value in column_format1:
worksheet.write(0, col_num, value, header_format1)
elif value in column_format2:
worksheet.write(0, col_num, value, header_format2)
column_len = df[value].astype(str).str.len().max()
column_len = max(column_len, len(value)) + 3
print(column_len)
worksheet.set_column(col_num, col_num, column_len)
writer.save()
输出Excel格式:
推荐阅读
- c - 在这些 C 代码片段中发现了哪些问题?
- c# - UI 线程和 SynchronizationContext
- oracle - Oracle 中的“列不明确定义”错误
- java - 如何找到孙子(?)元素的Xpath
- c++ - 为什么 SFML Xcode 不能使用 C++ 加载我的 .png 文件?
- javascript - 如何创建从零计数到 HTML 中包含的元素的 Javascript PURE 动画?
- pycharm - PyCharm:为什么它会收集我的个人数据
- python - 打印两个字符串中同一位置不同的特定字符
- typescript - 配置/路由映射的装饰器如何工作(TypeScript 和 Loopback4)?
- python - Tkinter: Remove 2 characters from the end of a index