Xlsxwriter:在同一工作区中格式化三个单元格区域

2024-09-28 22:31:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将A1:E14格式设置为美元,F1:K14格式为百分比,A15:Z1000格式为美元。在XlsxWriter中有没有一种方法可以做到这一点?在

我知道如何将整列格式化为美元/百分比,但不知道如何格式化部分列——无论我最后做什么,都会覆盖列F:K。在

数据是从大熊猫开始的,所以很乐意解决那里的问题。以下似乎不起作用:

sheet.set_column('A1:E14', None, money_format)

更多代码:

^{pr2}$

Tags: 数据方法a1格式sheetf1百分比set
1条回答
网友
1楼 · 发布于 2024-09-28 22:31:49

我看不到仅使用xlsxwriter和Pandas实现每个单元格格式的方法,但是可以使用openpyxl在单独的步骤中应用格式化,如下所示:

import openpyxl

def write_format(ws, cell_range, format):
    for row in ws[cell_range]:
        for cell in row:
            cell.number_format = format

sheet_name = "Total"

with pd.ExcelWriter(write_path) as writer:
    write_worksheet(df, writer, sheet_name=sheet_name)  

wb = openpyxl.load_workbook(write_path)
ws = wb.get_sheet_by_name(sheet_name)   

money_fmt = '$#,##0_-'
pct_fmt = '0.00%'

write_format(ws, 'A1:G1', money_fmt)
write_format(ws, 'A1:E14', money_fmt)
write_format(ws, 'F1:K14', pct_fmt)
write_format(ws, 'F15:Z1000', money_fmt)    

wb.save(write_path) 

当尝试使用xlsxwriter时,它总是覆盖来自Pandas的现有数据。但是如果Pandas被要求重写数据,那么它就会覆盖所有应用的格式。似乎没有任何方法可以在不覆盖内容的情况下对现有单元格应用格式。例如,write_blank()函数声明:

This method is used to add formatting to a cell which doesn’t contain a string or number value.

相关问题 更多 >