首页 > 解决方案 > 如何从列中随机选择一个 Excel 单元格?

问题描述

我正在尝试从 Tkinter 中的 Excel 工作表的列中随机选择一个单元格。我尝试了几种不同的方法:

第一,我试过:

wb = load_workbook('Test_Workbook.xlsx')
ws = wb.active

range = ws['A2':'A7']

for cell in range:
    for x in cell:
        print(random.choices((x.value)))

第二,我试过

wb = load_workbook('Test_Workbook.xlsx')
ws = wb.active

A = ws['A']
print(A)
for cell in A:
    print(random.choices(f'{cell.value}') )

这两个示例都在单元格内输出字符串的随机字母,而不是从列中选择随机单元格。我如何让它返回随机单个单元格的值?

标签: pythonexcel

解决方案


有多种方法可以实现这一点,我尽量坚持你的方法。所以首先要看到的是,要调用worksheet对象中的一个单元格,您可以使用 A1 表示法,例如ws["B5"]. 如果您现在要选择的范围是A2:A7您需要一个列表,例如

l = ['A1','A2',..'A7']
rand_cell = random.choice(l)

现在要稍微自动化一下,您可以执行以下操作:

column = 'A'
row_range = list(range(2,8)) # [1,2,...7]

并从 row_range 中选择一个随机值并将两者连接起来

rand_cell = "{column}{row}".format(column = column, row = random.choice(row_range))

完整示例:

wb = load_workbook('Test_Workbook.xlsx')
ws = wb.active

column = 'A'
row_range = list(range(2,8)) # [1,2,...7]

rand_cell = "{column}{row}".format(column = column, row = random.choice(row_range))

print(ws[rand_cell])

推荐阅读