首页 > 解决方案 > add_format 与 xlsxwriter 无法按预期工作

问题描述

我正在尝试使用 pandas 和 xlsxwriter 向 excel 文件添加标题

worksheet.merge_range merge_format 未按预期工作。

df = pd.DataFrame.from_records(pd.json_normalize(data))
writer = pd.ExcelWriter("teste12.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name=nome_tabela, index=False, startcol=0, startrow=5)
workbook = xlsxwriter.Workbook(writer)
merge_format = workbook.add_format()
merge_format.set_border(True)
merge_format.set_bold(True)
merge_format.set_align("center")
merge_format.set_align("vcenter")
merge_format.set_font_size(20)
worksheet = writer.sheets[nome_tabela]
worksheet.merge_range(0,0,3,6,"Test", merge_format)
writer.save()

我还尝试使用 merge_format 作为文档示例:

merge_format = workbook.add_format({
'bold': 1,
'border': 1,
'align': 'center',
'valign': 'vcenter',
'fg_color': 'yellow',
'font_size' : 20})

在这两种情况下,粗体、边框和对齐都按预期工作。font_size、valign 和 fg_color 不起作用。

在此处输入图像描述

我究竟做错了什么 ???

标签: pythonexcelxlsxwriter

解决方案


问题是您正在使用由xlsxwriter.Workbook().

使用 Python Pandas 和 XlsxWriter以及下面的工作示例中显示了获取 Pandas 创建的工作簿的正确方法:

import pandas as pd


nome_tabela = 'Sheet1'

df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})

writer = pd.ExcelWriter("teste12.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name=nome_tabela, index=False, startcol=0, startrow=5)

# Get the Pandas created workbook.
workbook  = writer.book
merge_format = workbook.add_format()

merge_format.set_border(True)
merge_format.set_bold(True)
merge_format.set_align("center")
merge_format.set_align("vcenter")
merge_format.set_font_size(20)

worksheet = writer.sheets[nome_tabela]

worksheet.merge_range(0, 0, 3, 6, "Test", merge_format)
writer.save()

输出

在此处输入图像描述


推荐阅读