使用python将格式添加到dataframe并插入excel?

使用python将格式添加到dataframe并插入excel?,python,pandas,xlsxwriter,openxlsx,Python,Pandas,Xlsxwriter,Openxlsx,我必须在excel中插入一个带边框的数据库,并且数据框中的所有值都应该居中。我尝试对单元格进行格式化,但不起作用 df1.to_excel(writer,index=False,header=True,startrow=12,sheet_name='Sheet1') writer.close() writer=pd.ExcelWriter(s, engine="xlsxwriter") writer.book = load_workbook(s)

我必须在excel中插入一个带边框的数据库,并且数据框中的所有值都应该居中。我尝试对单元格进行格式化,但不起作用

df1.to_excel(writer,index=False,header=True,startrow=12,sheet_name='Sheet1')
    writer.close()
    writer=pd.ExcelWriter(s, engine="xlsxwriter")
    writer.book = load_workbook(s)
    workbooks= writer.book
    worksheet = workbooks['Sheet1']
    f1= workbooks.add_format()
    worksheet.conditional_format(12,0,len(df1)+1,7,{'format':f1})
你能帮我做这个吗


我不会撒谎:我现在是第一次这样做,所以这可能不是一个很好的解决方案。我使用的是
openpyxl
,因为它比
XlsxWriter
更灵活。我希望你也能使用它

我的假设是变量
file\u name
包含有效的文件名

第一步:

with pd.ExcelWriter(file_name, engine='xlsxwriter') as writer:
    df1.to_excel(writer, index=False, header=True, startrow=12, sheet_name='Sheet1')
然后从
openpyxl
进行必要的导入:

from openpyxl import load_workbook
from openpyxl.styles import NamedStyle, Alignment, Border, Side
加载工作簿并选择工作表:

wb = load_workbook(file_name)
ws = wb['Sheet1']
定义所需的样式:

centered_with_frame = NamedStyle('centered_with_frame')
centered_with_frame.alignment = Alignment(horizontal='center')
bd = Side(style='thin')
centered_with_frame.border = Border(left=bd, top=bd, right=bd, bottom=bd)
选择相关单元格:

cells = ws[ws.cell(row=12+1, column=1).coordinate:
           ws.cell(row=12+1+df1.shape[0], column=df1.shape[1]).coordinate]
将定义的样式应用于选定的单元格:

for row in cells:
    for cell in row:
        cell.style = centered_with_frame
最后保存工作簿:

wb.save(file_name)

正如我所说:这可能不是最优的。

我不会撒谎:我现在是第一次这样做,所以这可能不是一个很好的解决方案。我使用的是
openpyxl
,因为它比
XlsxWriter
更灵活。我希望你也能使用它

我的假设是变量
file\u name
包含有效的文件名

第一步:

with pd.ExcelWriter(file_name, engine='xlsxwriter') as writer:
    df1.to_excel(writer, index=False, header=True, startrow=12, sheet_name='Sheet1')
然后从
openpyxl
进行必要的导入:

from openpyxl import load_workbook
from openpyxl.styles import NamedStyle, Alignment, Border, Side
加载工作簿并选择工作表:

wb = load_workbook(file_name)
ws = wb['Sheet1']
定义所需的样式:

centered_with_frame = NamedStyle('centered_with_frame')
centered_with_frame.alignment = Alignment(horizontal='center')
bd = Side(style='thin')
centered_with_frame.border = Border(left=bd, top=bd, right=bd, bottom=bd)
选择相关单元格:

cells = ws[ws.cell(row=12+1, column=1).coordinate:
           ws.cell(row=12+1+df1.shape[0], column=df1.shape[1]).coordinate]
将定义的样式应用于选定的单元格:

for row in cells:
    for cell in row:
        cell.style = centered_with_frame
最后保存工作簿:

wb.save(file_name)

正如我所说:这可能不是最优的。

谢谢你的回复,但我是通过直接将格式应用于数据帧来实现的,因为add_format()[ATTRIBUTE error]有一些错误。谢谢你的回复,但我是通过直接将格式应用于数据帧来实现的,因为add_format()[ATTRIBUTE error]有一些错误