翼度科技»论坛 编程开发 python 查看内容

Python&Excel办公自动化

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
操作工作簿01 新建一个excel工作簿
  1. #2023-4-17
  2. import xlwings as xw
  3. # 启动 excel,但不新建工作簿  app是什么,app是excel程序本身
  4. app = xw.App(visible=True,add_book=True)
  5. #新建一个工作簿
  6. workbook=app.books.add()
  7. # 保存新建的工作簿
  8. workbook.save('D:\python_data/test.xlsx')
  9. workbook.close()
  10. #关闭excel软件
  11. app.quit()
复制代码
02 批量新建多个工作簿
  1. #2023-4-17
  2. import xlwings as xw
  3. # 启动 excel,但不新建工作簿  app是什么,app是excel程序本身
  4. app = xw.App(visible=False,add_book=False)  #后台运行
  5. for i in range(1,13): #左闭右开
  6.     workbook=app.books.add()
  7.     workbook.save(f'D:\\python_data\\excelbook\\{i}月报表.xlsx')
  8.     workbook.close()
  9. #关闭excel软件
  10. app.quit()
复制代码
03 打开已有的工作簿
  1. import xlwings as xw
  2. app = xw.App(visible=True,add_book=False)
  3. app.books.open(f'D:\\python_data\\发票信息.xlsx')
复制代码
04 打开文件夹下的所有工作簿
  1. import xlwings as xw
  2. from pathlib import Path
  3. #打开excel软件
  4. app=xwapp = xw.App(visible=True,add_book=False)
  5. #需要一个excel文件的list
  6. folder_path=Path('C:\\Users\\hank-02\\Desktop\\新建文件夹 (2)')  #这里用了相对路径,相对路径要双斜线\\
  7. excel_file_list=folder_path.glob('*.xls*')  #  判断文件夹下文件的扩展名是否为xls,或者xlsx
  8. for file in excel_file_list:
  9.     app.books.open(file)
复制代码
05 重命名多个工作簿
  1. from pathlib import Path
  2. #第一步获取符合条件的文件列表
  3. file_path=Path('D:\\python_data\\excelbook')  #待重命名工作簿所在的文件夹
  4. file_list=file_path.glob('*月.xlsx') #查找文件夹下所有与 月结尾的工作簿匹配的文件
  5. #遍历上述列表,循环重命名文件
  6. for old_file in file_list:
  7.     old_file_name=old_file.name  #获取当前文件名
  8.     new_file_name=old_file_name.replace('月','月报表') #通过替换字符串方法生成新的文件名
  9.     new_file=old_file.with_name(new_file_name) #通过with_name 生成一个新的文件对象
  10.     old_file.rename(new_file) #通过rename方法重命名文件
复制代码
06 批量修改工作簿格式
  1. #批量转换工作簿的格式,将所有的xlsx格式文件,另存为xls格式的文件
  2. from pathlib import Path
  3. import xlwings as xw
  4. app = xw.App(visible=False,add_book=False)
  5. folder_path=Path('D:\\python_data\\excelbook') #  给出工作簿所在的文件夹路径
  6. file_list=folder_path.glob('*.xlsx')   #查找文件夹下所有xlsx的工作簿文件
  7. for file in file_list:
  8.    
  9.     if '$' in file.name:   #如果文件包含临时文件,则跳过
  10.         continue;
  11.         
  12.     print('开始转换:'+file.name)
  13.     new_file_path=str(file.with_suffix('.xls'))
  14.     workbook=app.books.open(file)
  15.     workbook.api.SaveAs(new_file_path,FileFormat=56)
  16.     workbook.close()
  17.     print('完成转换:'+ new_file_path)
  18. #关闭excel软件
  19. app.quit()
复制代码
07 拆分一个工作簿变成多个新工作簿
  1. #拆分一个工作簿变成多个新工作簿
  2. from pathlib import Path
  3. import xlwings as xw
  4. app = xw.App(visible=False,add_book=False)
  5. source_workbook=app.books.open('D:\\python_data\\excelbook\\拆分工作簿.xlsx')#打开需要拆分的工作簿
  6. source_worksheets=source_workbook.sheets #获取拆分工作簿里面是所有sheet
  7. for worksheet in source_worksheets:
  8.     #1 新建一个目标工作簿workbook
  9.     new_workbook=app.books.add()
  10.     #2 创建第一个sheet,  选择目标工作簿中的第一表
  11.     new_worksheet=new_workbook.sheets[0]
  12.     #3 复制sheet内容到新sheet中
  13.     worksheet.copy(before=new_worksheet)
  14.     #4 保存并关闭
  15.     new_workbook.save(f'D:\\python_data\\excelbook\\拆分后的\\{worksheet.name}.xlsx')
  16.     new_workbook.close()
  17.    
  18. source_workbook.close()
  19. #关闭excel软件
  20. app.quit()
复制代码
08 将多个工作簿合并为一个工作簿
  1. from pathlib import Path
  2. import pandas as pd
  3. file_list =Path('C:\\Users\\hank-02\\Desktop\\测试数据').glob('*.xlsx')
  4. frozen_file_list=[]
  5. for i in file_list:
  6.     frozen_file_list.append(i)
  7. with pd.ExcelWriter('C:\\Users\\hank-02\\Desktop\\测试数据\\总表.xlsx') as workbook:
  8.     for file in frozen_file_list:
  9.         #读取单个文件,只读了数据本身,没有把格式一并读出来file.stem
  10.         data=pd.read_excel(file,sheet_name=0)
  11.         data.to_excel(workbook,sheet_name=file.stem,index=False)
复制代码
09 按照扩展名分类工作簿
  1. from pathlib import Path
  2. folder_path=Path('C:\\Users\\hank-02\\Desktop\\测试数据')  #数据源
  3. file_list=folder_path.glob('*.xls*')
  4. #1、遍历文件列表
  5. for i in file_list:
  6.     suffix_name=i.suffix
  7.     new_folder_path=Path('C:\\Users\\hank-02\\Desktop\\测试数据\\'+suffix_name.replace('.',''))#测试数据后面要加个\\,代表是在这个文件夹下进行分类
  8. #2、判断当前文件扩展名,查看扩展名目录是否存在,不存在的话就创建一个新的目录
  9.     if not new_folder_path.exists():
  10.         new_folder_path.mkdir()
  11.    
  12. #3、移动文件
  13.     i.replace(new_folder_path/i.name)
复制代码
10 按照日期分类工作簿
  1. from pathlib import Path
  2. from time import localtime
  3. folder_path=Path('C:\\Users\\hank-02\\Desktop\\测试数据')
  4. file_list=folder_path.glob('*.xls*')
  5. #1、遍历文件列表
  6. for i in file_list:
  7.     #2、根据文件最好修改日期的年份和月份,组成目录
  8.     lm_date=i.stat().st_mtime
  9.     year=localtime(lm_date).tm_year
  10.     month=localtime(lm_date).tm_mon
  11.     new_folder_path=folder_path/str(year)/str(month)
  12.     if not new_folder_path.exists():
  13.         new_folder_path.mkdir(parents=True)
  14.     i.replace(new_folder_path/i.name)
复制代码
11 精确查找工作簿
  1. from pathlib import Path
  2. folder_path_str = input('请输入查找的路径:')
  3. file_name_str= input('请输入要查找的工作簿名称:')
  4. folder_path = Path(folder_path_str)
  5. file_list = folder_path.rglob(file_name_str) # rglob 用于指定文件夹及其子文件夹中查找名称符合指定规则的文件或文件
  6. for i in file_list:
  7.     print(i)
复制代码
12 按关键字查找工作簿
  1. from pathlib import Path
  2. folder_path_str = input('请输入查找的路径:')
  3. key_word= input('请输入关键字:')
  4. folder_path = Path(folder_path_str)
  5. file_list = folder_path.rglob(f'*{key_word}*.xls*')  #rglob 用于指定文件夹及其子文件夹中查找名称符合指定规则的文件或文件
  6. for i in file_list:
  7.     print(i)
复制代码
13 保护一个工作簿的结构
  1. import xlwings as xw
  2. app=xw.App(visible=False,add_book=False)
  3. workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\工作\\交接文档\\南山固定资产.xlsx')
  4. workbook.api.Protect(Password='123',Structure=True,Windows=False)
  5. workbook.save()
  6. workbook.close()
  7. app.quit()
复制代码
14 加密保护一个工作簿
  1. import xlwings as xw
  2. app=xw.App(visible=False,add_book=False)
  3. workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\工作\\交接文档\\南山固定资产.xlsx')
  4. workbook.api.Password='123'
  5. workbook.save()
  6. workbook.close()
  7. app.quit()
复制代码
15 加密保护多个工作簿
  1. from pathlib import Path
  2. import xlwings as xw
  3. app=xw.App(visible=False,add_book=False)
  4. folder_path=Path('C:\\Users\\hank-02\\Desktop\\测试数据\\2023\\5')
  5. file_list=folder_path.glob('*.xls*')
  6. for i in file_list:
  7.     workbook=app.books.open(i)
  8.     workbook.api.Password='123'
  9.     workbook.save()
  10.     workbook.close()
  11. app.quit()
复制代码
操作工作表
16 提取一个工作簿中所有工作表的名称
  1. #提取一个工作簿中所有工作表的名称(方法一:)
  2. import xlwings as xw
  3. app=xw.App(visible=False,add_book=False)
  4. workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\2023-3-31南山固定资产(重要).xlsx')
  5. worksheets=workbook.sheets
  6. sheet_name_list=[]
  7. for i in worksheets:
  8.     sheet_name_list.append(i.name)
  9. workbook.close()
  10. app.quit()
  11. print(sheet_name_list)
  12. #提取一个工作簿中所有工作表的名称(方法二:)
  13. import pandas as pd
  14. file_path='C:\\Users\\hank-02\\Desktop\\2023-3-31南山固定资产(重要).xlsx'
  15. data=pd.read_excel(file_path,sheet_name=None)
  16. #print(type(data))#data是字典类型
  17. worksheet_name=list(data.keys())
  18. print(worksheet_name)
复制代码
17 在一个工作薄中新增一个工作表
  1. #在一个工作薄中新增一个工作表
  2. import xlwings as xw
  3. app=xw.App(visible=False,add_book=False)
  4. workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\2023-3-31南山固定资产(重要).xlsx')
  5. worksheets=workbook.sheets
  6. new_sheet_name='测试'
  7. sheet_name_list=[]
  8. for i in worksheets:
  9.     sheet_name_list.append(i.name)
  10. if new_sheet_name not in sheet_name_list:
  11.     worksheets.add(name=new_sheet_name)
  12. workbook.save()
  13. workbook.close()
  14. app.quit()
复制代码
18 在一个工作簿中删除一个工作表
  1. #在一个工作簿中删除一个工作表
  2. import xlwings as xw
  3. app=xw.App(visible=False,add_book=False)
  4. workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\2023-3-31南山固定资产(重要).xlsx')
  5. worksheets=workbook.sheets
  6. del_sheet_name='测试'
  7. for i in worksheets:
  8.     if i.name==del_sheet_name:
  9.         i.delete()
  10.         break
  11. workbook.save()
  12. workbook.close()
  13. app.quit()
复制代码
19 在多个工作簿中批量新增工作表
  1. #在多个工作簿中批量新增工作表
  2. import xlwings as xw
  3. from pathlib import Path
  4. #1、获取文件列表
  5. file_list=Path('C:\\Users\\hank-02\\Desktop\\新建文件夹2').glob('*.xls*')
  6. new_sheet_name='测试表'
  7. app=xw.App(visible=False,add_book=False)
  8. for file in file_list:
  9.     workbook=app.books.open(file)
  10.     worksheets=workbook.sheets
  11.     sheet_name_list=[]
  12.     for i in worksheets:
  13.         sheet_name_list.append(i.name)
  14.     if new_sheet_name not in sheet_name_list:
  15.         worksheets.add(name=new_sheet_name)
  16.     workbook.save()
  17.     workbook.close()
  18.    
  19. app.quit()
复制代码
 20 在多个工作簿中批量删除工作表
  1. #在多个工作簿中批量删除工作表
  2. import xlwings as xw
  3. from pathlib import Path
  4. #1、获取文件列表
  5. file_list=Path('C:\\Users\\hank-02\\Desktop\\新建文件夹2').glob('*.xls*')
  6. del_sheet_name='测试表'
  7. app=xw.App(visible=False,add_book=False)
  8. for file in file_list:
  9.     workbook=app.books.open(file)
  10.     worksheets=workbook.sheets
  11.    
  12.     for i in worksheets:
  13.         if i.name==del_sheet_name:
  14.             i.delete()
  15.             break
  16.     workbook.save()
  17.     workbook.close()
  18.    
  19. app.quit()
复制代码
行/列操作

来源:https://www.cnblogs.com/lxhui/p/17463953.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具