鱼C论坛

 找回密码
 立即注册
查看: 453|回复: 5

求助20240131

[复制链接]
发表于 2024-1-31 10:24:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 清風 于 2024-1-31 10:34 编辑

现在又有问题:

1.1、已经定义了如下函数能够实现按sheet名分别储存行、列排除规则:
   
def exclude_rows_and_cols():

     。。。

        return exclude_rules


     

回复请注意python格式。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-31 10:25:57 | 显示全部楼层
你好!对于问题1.2,可以定义一个新的函数,让它在后续所有工作簿遇到同名sheet时自动调用相应的行、列排除规则。可以使用openpyxl库来实现这个功能。下面是示例代码:

  1. import openpyxl

  2. def exclude_rows_and_cols():
  3.     # 这里是你的行、列排除规则的代码
  4.     # 。。。
  5.     return exclude_rules

  6. def apply_exclude_rules(filename):
  7.     wb = openpyxl.load_workbook(filename)
  8.     for sheet_name in wb.sheetnames:
  9.         exclude_rules = exclude_rows_and_cols()
  10.         if sheet_name in exclude_rules:
  11.             sheet = wb[sheet_name]
  12.             for row_num in exclude_rules[sheet_name]['rows']:
  13.                 sheet.row_dimensions[row_num].hidden = True
  14.             for col_num in exclude_rules[sheet_name]['cols']:
  15.                 sheet.column_dimensions[col_num].hidden = True
  16.     wb.save(filename)

  17. # 调用apply_exclude_rules函数
  18. apply_exclude_rules('your_workbook.xlsx')
复制代码


对于问题2.2,同样可以定义一个新的函数来自动调用行、列验证规则。也可以使用openpyxl库来实现这个功能。下面是示例代码:

  1. import openpyxl

  2. def record_validation_rules(filename):
  3.     # 这里是你的行、列验证规则的代码
  4.     # 。。。
  5.     return sheet_validations

  6. def apply_validation_rules(filename):
  7.     wb = openpyxl.load_workbook(filename)
  8.     for sheet_name in wb.sheetnames:
  9.         sheet_validations = record_validation_rules(filename)
  10.         if sheet_name in sheet_validations:
  11.             sheet = wb[sheet_name]
  12.             for cell_address in sheet_validations[sheet_name]:
  13.                 validation = openpyxl.worksheet.datavalidation.DataValidation(sheet=sheet)
  14.                 validation.add(''.join(cell_address))
  15.                 sheet.add_data_validation(validation)
  16.     wb.save(filename)

  17. # 调用apply_validation_rules函数
  18. apply_validation_rules('your_workbook.xlsx')
复制代码


希望这些代码能帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-31 10:29:20 | 显示全部楼层
FishC 发表于 2024-1-31 10:25
你好!对于问题1.2,可以定义一个新的函数,让它在后续所有工作簿遇到同名sheet时自动调用相应的行、列排除 ...

忘记告诉你:我的文件是xls的..........

回复请注意python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-31 10:30:02 | 显示全部楼层
清風 发表于 2024-01-31 10:29
忘记告诉你:我的文件是xls的..........

回复请注 ...


非常抱歉,我之前的回答是基于xlsx文件格式的。对于xls文件格式,你可以使用xlrd和xlwt这两个库来读取和写入xls文件。以下是修改后的代码示例:

  1. import xlrd
  2. import xlwt

  3. def exclude_rows_and_cols():
  4.     # 这里是你的行、列排除规则的代码
  5.     # 。。。
  6.     return exclude_rules

  7. def apply_exclude_rules(filename):
  8.     rb = xlrd.open_workbook(filename)
  9.     wb = xlwt.Workbook()

  10.     for sheet_name in rb.sheet_names():
  11.         exclude_rules = exclude_rows_and_cols()
  12.         if sheet_name in exclude_rules:
  13.             sheet = rb.sheet_by_name(sheet_name)
  14.             new_sheet = wb.add_sheet(sheet_name)

  15.             for row_num in range(sheet.nrows):
  16.                 if row_num + 1 not in exclude_rules[sheet_name]:
  17.                     new_sheet.write(row_num, 0, sheet.row_values(row_num))

  18.             for col_num in range(sheet.ncols):
  19.                 if col_num + 1 not in exclude_rules[sheet_name]:
  20.                     for row_num in range(sheet.nrows):
  21.                         new_sheet.write(row_num, col_num, sheet.cell_value(row_num, col_num))

  22.     wb.save('new_' + filename)

  23. # 调用apply_exclude_rules函数
  24. apply_exclude_rules('your_workbook.xls')
复制代码


同样地,对于行、列验证规则的问题,你也可以使用xlrd和xlwt库来实现。根据你的需求进行修改即可。希望这次能够帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-31 10:54:34 | 显示全部楼层
你的号回来了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-31 11:14:49 | 显示全部楼层

回来了   谢谢挂念
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 20:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表