You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理Excel:C3列按C1、C2范围随机化仅最后行生效问题

解决Excel C3列批量随机化问题

你的代码存在三个关键问题,导致只有最后一行被修改:

  1. 行和列索引顺序错误:xlrd的cell_value(rowx, colx)参数是先写行号,再写列号,你之前把行列顺序搞反了,根本没取到当前行的C1、C2值。
  2. 循环逻辑混乱:没必要嵌套遍历列,而且写入操作放在了循环外部,只执行了一次,自然只修改了最后一行。
  3. 变量命名冲突:用random作为变量名,覆盖了导入的random模块,会导致后续调用报错。

修正后的代码如下:

import xlrd
from xlutils.copy import copy
import random

book = xlrd.open_workbook('temp.xlsx')
sheet = book.sheet_by_index(0)
nbook = copy(book)
nsheet = nbook.get_sheet(0)

# 遍历每一行(如果有表头,改成range(1, sheet.nrows)跳过表头)
for i in range(sheet.nrows):
    # 获取当前行C1(列索引1)和C2(列索引2)的值
    min_val = sheet.cell_value(i, 1)
    max_val = sheet.cell_value(i, 2)
    # 生成范围内的随机整数(浮点数用random.uniform)
    random_num = random.randint(int(min_val), int(max_val))
    # 写入当前行的C3列(列索引3)
    nsheet.write(i, 3, random_num)

nbook.save('new_temp.xlsx')

补充说明:

  • 如果C1、C2是浮点数,替换random.randint为random.uniform(min_val, max_val),还可以用round()控制小数位数。
  • 若表格有表头,记得调整循环起始行,避免修改表头数据。

内容的提问来源于stack exchange,提问作者user20195885

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:10:18