如何封装Python函数批量为30个Excel工作簿指定列插入文本?
批量处理Excel工作簿:封装函数实现指定位置文本插入
需求说明
现有30个命名规则为myfile1.xlsm、myfile2.xlsm……myfile30.xlsm的工作簿,需要为每个文件中Sheet1工作表的Q列,从Q5开始的第一个空单元格插入指定文本。以下是将单文件处理逻辑封装为函数,并实现批量处理的方案:
封装后的完整代码
import openpyxl def insert_text_to_first_empty_cell(file_path): # 加载工作簿,保留VBA宏 wb = openpyxl.load_workbook(file_path, keep_vba=True) try: # 定位到Sheet1工作表 ws = wb["Sheet1"] # 遍历Q5到Q1000范围,寻找第一个空单元格 for row in ws['Q5:Q1000']: cell = row[0] if cell.value is None: cell.value = 'random text' break # 保存修改后的工作簿 wb.save(file_path) finally: # 确保工作簿资源被释放 wb.close() # 批量处理30个目标文件 folder_path = 'C:/Users/me/randomfolder/' for i in range(1, 31): file_name = f'myfile{i}.xlsm' full_file_path = f'{folder_path}{file_name}' insert_text_to_first_empty_cell(full_file_path)
关键细节说明
- 函数复用性:将单文件处理逻辑封装为
insert_text_to_first_empty_cell函数,只需传入文件路径即可完成单个文件的处理 - 批量遍历逻辑:通过
range(1,31)生成1到30的序号,自动拼接每个文件的完整路径,实现批量调用 - 宏文件兼容:加载工作簿时保留
keep_vba=True参数,避免xlsm格式的宏文件结构被破坏 - 高效处理:找到第一个空单元格插入文本后立即
break终止循环,减少不必要的遍历操作 - 资源安全:使用
finally块确保工作簿处理完成后被关闭,避免资源占用问题
内容的提问来源于stack exchange,提问作者ohmandy
相关产品推荐
相关产品推荐

