使用Excel,存在一些基础重复性的操作工作,这些在日常工作可能会浪费很多的时间,通过python,可实现一些基础的操作,帮助日常办公高效操作Excel,主要梳理如下:
1.基础包:
Pathlib:操作工作簿的路径基础包
Xlwings:操作Excel工作簿的基础包
Pandas:读写相关操作
2.涉及到的操作
查看路径/移动路径新建工作簿打开已有工作簿重命名工作簿转化工作簿格式拆分工作簿合并工作簿加密工作簿
3 关键代码
3.1 移动工作簿路径
说明:只能在同一个盘幅内移动
''' 代码1:移动工作簿 说明:移动工作簿从old_path路径移动到new_path路径 关键方法:rename() ''' from pathlib import Path old_path = Path('D:\python\test_file\test_excel.xlsx') new_path = Path('D:\python\test_table\test_excel.xlsx') old_path.rename(new_path) new_path.rename(old_path) '''
3.2 解析查看基础路径信息
说明:查看基础路径,文件格式等基础信息
''' 代码2:解析工作簿的基础路径信息 主要属性:parent;stem,name,suffix ''' #from pathlib import Path file_path = Path('D:\python\test_file\test_excel.xlsx') # 获取文件夹路径 path = file_path.parent #获取文件名 file_name = file_path.name #获取文件主名 file_stem = file_path.stem #获取文件扩展名后缀 file_suf = file_path.suffix print(path,file_name,file_stem,file_suf)
3.3 获取文件路径下相关文件信息
说明:根据关键词模糊匹配即可
''' 代码3:获取文件夹下所有工作簿名称 主要方法:glob ''' from pathlib import Path fold_path = Path('D:\python\test_file\test_excel.xlsx') #茶轴啊符合指定规则的文件或文件夹并返回路径 file_list = fold_path.glob('*xlsx') lists = [] for i in file_list: file_name = i.name lists.append(file_name) print(lists)
3.4 新建并保存
说明:新建工作簿,并存储到指定路径
''' 代码4:新建并保存工作路径 主要包:xlwings 主要对象:APP 主要方法: 新建:add() 保存:save() 关闭:close() 退出:quit() ''' import xlwings as xw #打开Excel程序 app = xw.App(visible=False,add_book=False) #新建工作簿 workbook = app.books.add() #保存工作簿 workbook.save('D:\python\test_file\test_excel01.xlsx') #关闭工作簿 workbook.close() #退出Excel程序 app.quit()
3.5 打开文件
说明:打开已经保存工作簿
''' 代码5:打开一个已有的工作簿 主要包:xlwings 主要方法:open() ''' import xlwings as xw app = xw.App(visible=False,add_book=False) path_text = 'D:\python\test_file\test_excel.xlsx' app.books.open(path_text)
3.6 重命名工作簿
说明:重命名现有的工作簿
''' 代码6:重命名工作簿 主要包:pathlib 主要方法: 构造新路径:withname() 执行重命名操作:rename() ''' from pathlib import Path old_path = Path('D:\python\test_file\test_excel.xlsx') folder_path = Path('D:\python\test_file\test_excel.xlsx') new_excel = 'myexcel.xlsx' #替换原先路径中的文件名,得出新的路径 new_file_path = folder_path.with_name(new_excel) #移动路径 old_path.rename(new_file_path)
3.7 修改文件格式
说明:修改现有文件的文件格式,类似另存为新文件;这里分成两段代码说明相关函数的适用方法
''' 代码7:修改文件格式 主要方法: 修改文件后缀:with_suffix() 另存为:SaveAs() ''' from pathlib import Path import xlwings as xw old_path = Path('D:\python\test_file\test_excel.xlsx') app = xw.App(visible=False,add_book=False) # 修改文件格式,并转化为字符串对象 new_file_path01 = str(old_path.with_suffix('.xls')) workbook = app.books.open(old_path) workbook.api.SaveAs(new_file_path01,FileFormat=56) workbook.close() app.quit() # 第二段代码 from pathlib import Path import xlwings as xw old_path = Path('D:\python\test_file\test_excel.xlsx') app = xw.App(visible=False,add_book=False) new_file_path = 'D:\python\test_file\new_excel.xls' workbook = app.books.open(old_path) workbook.api.SaveAs(new_file_path,FileFormat=56) workbook.close() app.quit()
3.8 多个sheet拆分为新Excel
说明:即一个Excel里的sheet表新建成多个Excel
''' 代码8:多个表格sheet表拆分为新工作簿 主要函数: 复制表格:copy() ''' import xlwings as xw app = xw.App(visible=False,add_book=False) file_path = 'D:\python\test_file\sheets_excel.xlsx' workbook = app.books.open(file_path) worksheet = workbook.sheets for i in worksheet: # 新建工作簿 new_workbook = app.books.add() # 新建工作簿sheet new_worksheet = new_workbook.sheets[0] # 将来源工作簿的当前工作表复制到新建工作簿的第一个工作表之前 i.copy(before=new_worksheet) new_workbook.save('D:\python\test_file\{}.xlsx'.format(i.name)) new_workbook.close() app.quit()
参考截图效果:
3.9 多个Excel合并为一个Excel
说明:将多个Excel合并为一个Excel
''' 代码9:多个工作簿合并为一个工作簿 使用包:pathlib,pandas 主要函数: 读取Excel:read_excel() 写入Excel:to_excel() ''' from pathlib import Path import pandas as pd folder_path = Path('D:\python\test_file\month\') file_list = folder_path.glob('*.xlsx*') with pd.ExcelWriter('D:\python\test_file\month\总表.xlsx') as workbook: for i in file_list: # 获取工作簿文件名称 stem_name = i.stem # 读取工作簿第一个sheet表的内容 data = pd.read_excel(i,sheet_name=0) # 读取数据,写入新建的工作簿中 data.to_excel(workbook,sheet_name=stem_name,index=False)3.10 加密工作簿
说明:对工作簿做加密处理
''' 代码10:加密保护工作簿 ''' import xlwings as xw file_path = 'D:\python\test_file\总表.xlsx' app = xw.App(visible=False,add_book=False) workbook = app.books.open(file_path) workbook.api.Password = '123' workbook.save() workbook.close() app.quit()
参考截图效果: