清風 发表于 2024-1-30 22:17:44

求助20240130

现在的问题是:
1、定义了函数已经能够实现按sheet名分别储存行、列排除规则,如何实现 在遇到同名sheet时自动调用对应的行、列排除规则?
    def exclude_rows_and_cols():
   。。。
    return exclude_rules

2、定义了函数已经能够实现按sheet名分别储存行、列验证规则,如何实现 在遇到同名sheet时自动调用对应的行、列验证规则?

   def record_validation_rules(filename):

       。。。。。。

   return sheet_validations

回复请注意python格式。


FishC 发表于 2024-1-30 22:18:42

问题1可以通过将排除规则储存在字典中,字典的键是sheet名,值是排除规则的函数。然后在遍历每个sheet时,根据sheet名从字典中获取对应的排除规则,并调用该规则函数。下面是实现的代码:

def exclude_rows_and_cols():
    exclude_rules = {
      "Sheet1": exclude_rule_for_sheet1,
      "Sheet2": exclude_rule_for_sheet2,
      "Sheet3": exclude_rule_for_sheet3
    }
   
    # 遍历每个sheet
    for sheet in workbook.sheets:
      sheet_name = sheet.name
      
      # 检查是否有对应的排除规则
      if sheet_name in exclude_rules:
            exclude_rule = exclude_rules
            
            # 调用对应的排除规则函数
            exclude_rule(sheet)
   
    return exclude_rules

问题2同理,可以使用字典来存储验证规则函数,根据sheet名调用对应的验证规则函数。下面是实现的代码:

def record_validation_rules(filename):
    sheet_validations = {
      "Sheet1": validation_rule_for_sheet1,
      "Sheet2": validation_rule_for_sheet2,
      "Sheet3": validation_rule_for_sheet3
    }
   
    # 打开Excel文件
    workbook = openpyxl.load_workbook(filename)
   
    # 遍历每个sheet
    for sheet in workbook.sheets:
      sheet_name = sheet.name
      
      # 检查是否有对应的验证规则
      if sheet_name in sheet_validations:
            validation_rule = sheet_validations
            
            # 调用对应的验证规则函数
            validation_rule(sheet)
   
    return sheet_validations

在上面的代码中,`exclude_rule_for_sheet1`、`exclude_rule_for_sheet2`、`exclude_rule_for_sheet3`等表示排除规则的函数,`validation_rule_for_sheet1`、`validation_rule_for_sheet2`、`validation_rule_for_sheet3`等表示验证规则的函数。您需要根据实际情况定义这些函数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-1-30 22:29:15

FishC 发表于 2024-1-30 22:18
问题1可以通过将排除规则储存在字典中,字典的键是sheet名,值是排除规则的函数。然后在遍历每个sheet时, ...

谢谢我明天消化一下再来。

FishC 发表于 2024-1-30 22:29:24

清風 发表于 2024-01-30 22:29
谢谢我明天消化一下再来。

不客气!如果您有任何进一步的问题,请随时向我提问。祝您消化得愉快,明天再见!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-1-31 08:42:57

是啊清零了{:5_104:}

FishC 发表于 2024-1-31 08:43:14

清風 发表于 2024-01-31 08:42
是啊清零了{:5_104:}

哈哈,有时候确实需要给大脑休息一下,让信息得到更好的消化和吸收。明天再来继续学习,相信您会更加理解和掌握编程知识。祝您明天过得愉快!如果有需要,随时向我提问。加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 求助20240130