赞
踩
Excel的数据有效性功能,可以对输入单元格的数据进行内容上的限制。当我们利用 excel 生成代码时,可以通过此类方式规范输入。
以下是:【openpyxl官方文档】
wb = Workbook()
wb.save(xls_path)
# 加载excel文件(data_only=True 代表以数据形式而非公式)
wb = load_workbook(xls_path, data_only=True)
wb = load_workbook(xls_path, data_only=True)
wb.create_sheet(title=sheet_name)
wb = load_workbook(xls_path, data_only=True)
wb.remove(wb[sheet_name])
wb = load_workbook(xls_path, data_only=True)
xxx_sheet = wb[sheet_name]
wb = load_workbook(xls_path, data_only=True)
xxx_sheet = wb[sheet_name]
xxx_sheet.column_dimensions["A"].width = 20
wb = load_workbook(xls_path, data_only=True)
xxx_sheet = wb[sheet_name]
cell = xxx_sheet.cell(row=1, column=1) # 1行1列
wb = load_workbook(xls_path, data_only=True)
xxx_sheet = wb[sheet_name]
cell = xxx_sheet.cell(row=1, column=1) # 1行1列
from openpyxl.styles import Font
font = Font(b=True, color="FF0000") # 红色字体
cell.font = font
wb = load_workbook(xls_path, data_only=True)
xxx_sheet = wb[sheet_name]
cell = xxx_sheet.cell(row=1, column=1) # 1行1列
cell.value = 'YourName666'
wb = load_workbook(xls_path, data_only=True)
xxx_sheet = wb[sheet_name]
# 最大列数
print(xxx_sheet.max_column)
# 最大行数
print(xxx_sheet.max_row)
wb = load_workbook(xls_path, data_only=True)
wb.save(xls_path)
wb = load_workbook(xls_path, data_only=True) xxx_sheet= wb[sheet_name] # 清空原有有效性校验规则 xxx_sheet.data_validations.dataValidation = [] # 建立有效性(以"序列"的形式) dv = DataValidation(type="list", formula1=f'={sheet_name}!$A$1', allow_blank=True) # 设置自定义提示消息 dv.promptTitle = "XXX" dv.prompt = "XXX" # 设置自定义错误消息 dv.errorTitle = "XXX" dv.error = "XXX" dv.add(xxx_sheet.cell(1, 1)) xxx_sheet.add_data_validation(dv)
# -*-coding: utf-8 -*- import os from time import sleep from openpyxl import load_workbook, Workbook from openpyxl.worksheet.datavalidation import DataValidation class Data_Validation: def __init__(self, xls_path: str = 'demo.xlsx'): # 判断文件是否存在,若不存在,则生成该文件 if os.path.exists(xls_path) is False: print(f"<{xls_path}> not exist, creat <{xls_path}>...") wb = Workbook() wb.save(xls_path) # 加载excel文件(data_only=True 代表以数据形式而非公式) self.wb = load_workbook(xls_path, data_only=True) self.sheet_init() def sheet_init(self): """ 初始化 sheet页,即删除不必要的 sheet 页,新建所需的 sheet 页,并附上测试数据 :return: """ sheet_need = ['DEMO', 'base'] for sheet_name in self.wb.sheetnames: if sheet_name not in sheet_need: self.wb.remove(self.wb[sheet_name]) print(f"<{sheet_name}> deleted") for sheet_name in sheet_need: if sheet_name not in self.wb.sheetnames: self.wb.create_sheet(title=sheet_name) print(f"<{sheet_name}> added") # 加载 sheet页 base_sheet = self.wb['base'] # 设置列宽 base_sheet.column_dimensions["A"].width = 20 # 加载 单元格 cell = base_sheet.cell(row=1, column=1) # 设置单元格格式 from openpyxl.styles import Font font = Font(b=True, color="FF0000") # 红色字体 cell.font = font # 单元格赋值 cell.value = 'YourName666' # # 最大列数 # print(base_sheet.max_column) # # 最大行数 # print(base_sheet.max_row) self.wb.save('demo.xlsx') def load_validation(self, sheet_name: str = 'DEMO'): DEMO_sheet = self.wb[sheet_name] # 设置列宽 DEMO_sheet.column_dimensions["A"].width = 20 # 清空原有有效性校验规则 DEMO_sheet.data_validations.dataValidation = [] # 建立有效性(以"序列"的形式) dv = DataValidation(type="list", formula1=f'=base!$A$1', allow_blank=True) # 设置自定义提示消息 dv.promptTitle = "SELECT DATA" dv.prompt = "Select data from <base>" # 设置自定义错误消息 dv.errorTitle = "DATA ERROR" dv.error = "Select data from <base>" dv.add(DEMO_sheet.cell(1, 1)) DEMO_sheet.add_data_validation(dv) print(f"<{sheet_name}> add data validation") self.wb.save('demo.xlsx') if __name__ == '__main__': ins = Data_Validation() ins.load_validation() sleep(3)
<demo.xlsx> not exist, creat <demo.xlsx>...
<Sheet> deleted
<DEMO> added
<base> added
<DEMO> add data validation
project
│ excel.py
project
│ demo.xlsx
│ excel.py
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。