gpt4 book ai didi

python - 在 Excel 中的不同单元格范围上应用条件格式 (XlsxWriter)

转载 作者:行者123 更新时间:2023-11-30 22:38:14 25 4
gpt4 key购买 nike

我有一段代码,能够从 Excel 文件(文件 A)创建数据帧、应用格式并将结果保存到另一个 Excel 文件(文件 B)中。

部分格式化涉及 XlsxWriter 包的 .conditional_format() 方法,如下所示:

worksheet.conditional_format('A1:F80', 
{'type':'cell',
'criteria':'==',
'value':'"Folder & Contents:"',
'format': boldfill})

文件 A 的数据量可能不同,因此文件 B 的大小也不同。

因此我想知道是否有任何方法可以应用 conditional_format() 方法来读取结果数据帧的大小,并相应地应用格式直到表末尾,并且不超过标准大小(如“A1:F80”)如上面的代码所示。

谢谢!!!

最佳答案

我认为没有内置选项,因此您可以定义自己的函数以从数据帧传递到 Excel 范围。

您可以执行以下操作:

获取行范围(简单):

def get_row_range(df, start_row = 0):
# Using python convention that first row is zero
return (str(start_row+1), str(start_row + df.shape[0]))

获取列范围(不太容易):

from string import ascii_uppercase

def get_col_range(df, start_col = 0):
return (get_col_str(start_col), get_col_str(start_col + df.shape[1] - 1))

def get_col_str(num):
N = len(ascii_uppercase)
if num/N == 0:
return ascii_uppercase[num]
if num/N > 0:
prefix = ascii_uppercase[num/N - 1]
suffix = ascii_uppercase[num%N]
return prefix + suffix

将所有内容放在一起:

def get_df_range(df, start_col = 0, start_row = 0):
col_range = get_col_range(df, start_col)
row_range = get_row_range(df, start_row)

return ":".join([x+y for x, y in zip(col_range, row_range)])

测试:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(100, 3))

get_df_range(df) # 'A1:C100'
get_df_range(df, start_col = 1, start_row = 2) # 'B3:D102'

关于python - 在 Excel 中的不同单元格范围上应用条件格式 (XlsxWriter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43657398/

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