鱼C论坛

 找回密码
 立即注册
查看: 822|回复: 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库来实现这个功能。下面是示例代码:
import openpyxl

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

def apply_exclude_rules(filename):
    wb = openpyxl.load_workbook(filename)
    for sheet_name in wb.sheetnames:
        exclude_rules = exclude_rows_and_cols()
        if sheet_name in exclude_rules:
            sheet = wb[sheet_name]
            for row_num in exclude_rules[sheet_name]['rows']:
                sheet.row_dimensions[row_num].hidden = True
            for col_num in exclude_rules[sheet_name]['cols']:
                sheet.column_dimensions[col_num].hidden = True
    wb.save(filename)

# 调用apply_exclude_rules函数
apply_exclude_rules('your_workbook.xlsx')

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

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

def apply_validation_rules(filename):
    wb = openpyxl.load_workbook(filename)
    for sheet_name in wb.sheetnames:
        sheet_validations = record_validation_rules(filename)
        if sheet_name in sheet_validations:
            sheet = wb[sheet_name]
            for cell_address in sheet_validations[sheet_name]:
                validation = openpyxl.worksheet.datavalidation.DataValidation(sheet=sheet)
                validation.add(''.join(cell_address))
                sheet.add_data_validation(validation)
    wb.save(filename)

# 调用apply_validation_rules函数
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文件。以下是修改后的代码示例:
import xlrd
import xlwt

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

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

    for sheet_name in rb.sheet_names():
        exclude_rules = exclude_rows_and_cols()
        if sheet_name in exclude_rules:
            sheet = rb.sheet_by_name(sheet_name)
            new_sheet = wb.add_sheet(sheet_name)

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

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

    wb.save('new_' + filename)

# 调用apply_exclude_rules函数
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-9-22 03:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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