浅笑.` 2023-01-04 21:27 采纳率: 43.8%
浏览 49
已结题

Python 表格列是这样的,用openpyxl库如何将期中成绩中低于40分的分数,进行加10分操作,如果是“未做完”或“未交”的则不加。

表格列是这样的,用openpyxl库如何将期中成绩中低于40分的分数,进行加10分操作,如果是“未做完”或“未交”的则不加。

for col in ws_new.columns:
    for v in col:
        if v.value=='期中作业':
            qz_row=v.row
            qz_column=v.column
            # print(v.row,v.column)
for i in range(qz_row+1,ws_new.max_row+1):
    # print(ws_new.cell(i, qz_column).value)
    if ws_new.cell(i,qz_column).value != None and ws_new.cell(i,qz_column).value < 40:
        print(type(ws_new.cell(i,qz_column).value),ws_new.cell(i,qz_column).value)

第一列是个合并单元格的一串汉字
期中成绩
66
42
未做完0
71
56
未做完0
81
未交
75
未做完0
73
未做完
未做完0
未做完0
88
请假
76
77
25
72
25

  • 写回答

1条回答 默认 最新

  • starlight_2007 2023-01-05 01:02
    关注

    已知:
    指定excel下指定sheet下指定line的数据
    步骤:
    (1)提取指定数据;
    (2)按照上述数据处理要求进行分析和处理;
    (3)将处理好的数据输入到原文件中;
    (4)保存文件并适当提示用户操作完成。
    实践方案:
    (以下实例中假设指定excel文件绝对路径为C:\Users\ABC\Desktop\test.xlsx;指定工作表为Sheet1;指定列为A列,并且A列第一行是一个合并单元格的一部分)

    from openpyxl import load_workbook
    path = r'C:\Users\ABC\Desktop\test.xlsx'
    wb = load_workbook(path)
    sht = wb['Sheet1']
    line_A = sht['A']
    vals = [i.value for i in line_A]
    for num, val in zip(range(len(vals)),vals):#数据处理和输入
        if type(val) == int or type(val) == float:#筛选出分数
            if val <= 40:#筛选出小于等于40分的分数
                #对这些筛选出的分数进行加10分操作
                vals[num] = val + 10#将修改后的分数拷贝到提取出来的数据列表中
        sht[f'A{num+1}'] = vals[num]#对文件的对应位置进行修改
    wb.save(path)#保存更新后的文件
    print('处理完成。')#提示用户(可有可无)
    

    注:若想尽可能地减小内存占用,可以把第12行的输入语句放到if val <= 40:条件区间下,这样就不会对每一个单元格内的数据进行更新,而是只会对符合“不属于未交或未做完”和“低于40分”条件的那些数据进行更新。
    实例配图:

    操作前的文件截图

    img

    操作完成后的文件截图

    img

    注意:运行该脚本或相同原理改编件之前,请先关闭目标excel文件,否则会出现PermissionError、只读报错或数据误存等错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月5日
  • 已采纳回答 1月5日
  • 修改了问题 1月4日
  • 修改了问题 1月4日
  • 展开全部

悬赏问题

  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目