任务场景一:拆分与合并–快速的批量处理内容相似的Excel
批量合并
假设你需要对某些工作内容进行问卷调查,这时你用Excel做了调查问卷模版。 我想你会这样做:先把Excel通过工作群分发给所有员工,再把群里收集到的反馈附件汇总 成一个文件。
批量拆分
假设你是公司的财务人员,你需要使用Excel对员工工资进行核算,之后再打印 出来。但是公司要求员工薪水保密,所以每个员工的工资需要拆分成一个独立的文件,最 后还需要打印出来。
解决方案:使用Python实现自动化批量处理。
安装扩展库:支持Excel读取的扩展库叫做xlrd库,支持Excel写入的扩展库叫做xlwt库
找到整个工作过程当中重复操作的部分;
将重复操作的部分需要哪些手工操作找出来,使用Python编写程序代替手工操作的部分;
对重复的部分,使用循环语句进行批量处理。
可以使用绘制时序图来实现手工操作到Python程序的过渡
示例代码 Merge.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 import xlrdimport xlwtfrom pathlib import Path, PurePathsrc_path = 'D:/Python自动化办公/Day01/调查问卷' dst_file = 'D:/Python自动化办公/Day01/result/结果.xls' p = Path(src_path) files = [x for x in p.iterdir() if PurePath(x).match('*.xls' )] print(files) content = [] for file in files: username = file.stem data = xlrd.open_workbook(file) table = data.sheets()[0 ] answer1 = table.cell_value(rowx=4 , colx=4 ) answer2 = table.cell_value(rowx=10 , colx=4 ) temp = f'{username} ,{answer1} ,{answer2} ' content.append(temp.split(',' )) print("你好" ) print(temp) table_header = ['员工姓名' , '第一题' , '第二题' ] workbook = xlwt.Workbook(encoding='utf-8' ) x1sheet = workbook.add_sheet("统计结果" ) row = 0 col = 0 for cell_header in table_header: x1sheet.write(row, col, cell_header) col += 1 row += 1 for line in content: col = 0 for cell in line: x1sheet.write(row, col, cell) col += 1 row += 1 workbook.save(dst_file)
Split.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 import xlrdimport xlwtfrom pathlib import Path, PurePathsalary_file = 'D:/Python自动化办公/Day01/工资单/工资单.xls' dst_path = 'D:/Python自动化办公/Day01/工资单' data = xlrd.open_workbook(salary_file) table = data.sheets()[0 ] salary_header = table.row_values(rowx=0 , start_colx=0 , end_colx=None ) def write_to_file (filename, cnt ): ''' filename : 写入的文件名 cnt : 写入的内容 ''' workbook = xlwt.Workbook(encoding='utf-8' ) xlsheet = workbook.add_sheet("本月工资" ) row = 0 for line in cnt: col = 0 for cell in line: xlsheet.write(row, col, cell) col += 1 row += 1 workbook.save(PurePath(salary_file).with_name(filename).with_suffix('.xls' )) employee_number = table.nrows for line in range (1 ,employee_number): content = table.row_values(rowx=line, start_colx=0 , end_colx=None ) new_content = [] new_content.append(salary_header) new_content.append(content) write_to_file(filename = content[1 ], cnt = new_content)
Python与Excel交互模块学习