求助20240131
本帖最后由 清風 于 2024-1-31 10:34 编辑现在又有问题:
1.1、已经定义了如下函数能够实现按sheet名分别储存行、列排除规则:
def exclude_rows_and_cols():
。。。
return exclude_rules
回复请注意python格式。 你好!对于问题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
for row_num in exclude_rules['rows']:
sheet.row_dimensions.hidden = True
for col_num in exclude_rules['cols']:
sheet.column_dimensions.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
for cell_address in sheet_validations:
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 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-1-31 10:25
你好!对于问题1.2,可以定义一个新的函数,让它在后续所有工作簿遇到同名sheet时自动调用相应的行、列排除 ...
忘记告诉你:我的文件是xls的..........
回复请注意python格式 清風 发表于 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:
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:
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 小助理,如未能正确解答您的问题,请继续追问。 你的号回来了啊 中英文泡椒 发表于 2024-1-31 10:54
你的号回来了啊
回来了 谢谢挂念
页:
[1]