gpt4 book ai didi

python - Xlsxwriter:在同一工作表中格式化三个单元格范围

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:24 24 4
gpt4 key购买 nike

我想将 A1:E14 格式化为美元,将 F1:K14 格式化为百分比,将 A15:Z1000 格式化为美元。有没有办法在 XlsxWriter 中执行此操作?

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

数据从 pandas 开始,很高兴能解决那里的问题。以下似乎不起作用:

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

更多代码:

with pd.ExcelWriter(write_path) as writer:
book = writer.book
money_fmt = book.add_format({'num_format': '$#,##0'})
pct_fmt = book.add_format({'num_format': '0.00%'})
# call func that creates a worksheet named total with no format
df.to_excel(writer, sheet_name='Total', startrow=0)
other_df.to_excel(writer, sheet_name='Total', startrow=15)
writer.sheets['Total'].set_column('A1:E14',20, money_fmt)
writer.sheets['Total'].set_column('F1:K14',20, pct_fmt)
writer.sheets['Total'].set_column('F15:Z1000', 20, money_fmt)

最佳答案

我看不到一种方法可以通过 Pandas 使用 xlsxwriter 实现每个单元格的格式化,但是可以使用 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.

关于python - Xlsxwriter:在同一工作表中格式化三个单元格范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36028020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com