使用Python批量处理工作簿和工作表

  • 批量新建并保存工作簿
  • 批量打开一个文件夹中的打开工作簿
  • 批量重命名一个工作簿的所有工作表
  • 批量重命名多个工作簿
  • 批量重命名多个工作簿中的同名工作表
  • 将一个工作簿的所有工作表批量复制到其他工作簿
  • 按条件将一个工作表拆分为多个工作簿

批量新建并保存工作簿

代码

import xlwings as xw
# 启动 Excel,但不新建工作簿
app = xw.App(visible=True,add_book=False)for i in range(5):#新建工作簿workbook = app.books.add()#保存工作簿workbook.save(f'test{i}.xlsx')#将工作簿关闭workbook.close()

批量打开一个文件夹中的打开工作簿

import xlwings as xw
import os
# 给出工作簿所在的文件夹路径
path_file = r'E:/python1/python_module'
# 列出该文件夹中所有的子文件或子文件夹
file_list = os.listdir(path_file)
# 启动Excel
app = xw.App(visible=True,add_book=False)for i in file_list:# 判断文件是否为 Excel文件if os.path.splitext(i)[1] =='.xlsx':#打开app.books.open(i)

批量重命名一个工作簿的所有工作表

import xlwings as xw# 启动Excel
app = xw.App(visible=True,add_book=False)
# 打开工作簿
workbook = app.books.open('table.xlsx')
#获取工作簿的所有工作表
worhsheets = workbook.sheetsfor i in range(len(worhsheets)):# 重命名工作表worhsheets[i].name = worhsheets[i].name.replace('销售','')
#另存重命名后的工作簿
workbook.save('table1.xlsx')
#退出Excel程序
app.quit()

批量重命名多个工作簿

不过这是有前提条件的,要重命名的工作簿名必
须是有规律的,如表1、表2、表3;或者含有相同的关键字。

import xlwings as xw
import os
# 给出工作簿所在的文件夹路径
path_file = r'E:/python1/python_module'
# 列出该文件夹中所有的子文件或子文件夹
file_list = os.listdir(path_file)
old_book_name = '销售表'
new_book_name = '分部销售表'
# 启动Excel
app = xw.App(visible=True,add_book=False)for i in file_list:if i.startswith('~$'):continue# 执行查找和替换,生成新的工作簿名new_file = i.replace(old_book_name,new_book_name)# 构造需要重命名工作簿的完整路径old_path_filr = os.path.join(path_file,i)#构建重命名后工作簿的完整路径new_path_file = os.path.join(path_file,new_file)# 重命名os.rename(old_path_filr,new_path_file)

if i.startswith(’~$’):
continue

因为Excel会在使用过程中生成一些文件名以"~$"开头的临时文件,如果有这些文件就跳过。

批量重命名多个工作簿中的同名工作表

步骤

  1. 打印出文件夹中所有子文件的名称
  2. 与文件夹路径拼接成完整的文件名后,打开
  3. 遍历文件中的所有工作表,如果名字相同就更改
  4. 保存工作表目录

代码:

import xlwings as xw
import os
# 给出工作簿所在的文件夹路径
path_file = r'E:/python1/python_module'
# 列出该文件夹中所有的子文件或子文件夹
file_list = os.listdir(path_file)
old_sheet = 'sheet1'
new_sheet = '员工信息'
app = xw.App(visible=True,add_book= False)# 遍历工作簿
for i in path_file:if i.startswith('~$'):continue# 拼接出完整路径old_path_file = os.path.join(path_file,i)# 打开工作簿workbook = app.books.open(old_path_file)# 遍历工作表for j in workbook.sheets:if j.name == old_sheet:j.name = new_sheet# 保存工作簿workbook.save()
app.quit()

将一个工作簿的所有工作表批量复制到其他工作簿

步骤:

  1. 获取目标(复制到的)文件夹的所有子文件
  2. 打开源文件(被复制的),并获取其所有的工作表信息。
  3. 遍历所有的子文件,如果是Excel文件就打开
  4. 在目标工作簿中新增工作表
  5. 将来源工作表的数据写入新增工作表中

代码

import xlwings as xw
import os
# 给出工作簿所在的文件夹路径
path_file = r'E:/python1/python_module'
# 列出该文件夹中所有的子文件或子文件夹
file_list = os.listdir(path_file)
app = xw.App(visible=True,add_book= False)
workbook = app.books.open('来源工作簿路径')
worksheet = workbook.sheets# 子文件
for i in path_file:if os.path.splitext(i)[1] =='.xlsx':# 打开工作簿workbooks = app.books.open(path_file+'/'+i)# 遍历工作表for j in worksheet:# 读取工作表中的信息contents = j.range('A1').expand('table').value# 读取工作表的名称name = j.name# 增加同名的工作表workbooks.sheets.add(name = name,after = len(workbooks.sheets))# 写入数据workbooks.sheets[name].range('A1').value = contents# 保存工作簿workbook.save()
app.quit()

.expand()xlwings模块中的函数,用于扩展选择范围。语法格式如下

expand(mode) 默认值是 ‘table’,表示向整个数据表扩展。也可以是’down’(下方)或’right’(右方)

按条件将一个工作表拆分为多个工作簿

import  os
import xlwings as xwfilr_path = 'e:\\table\\产品统计表.xlsx'
sheet_name = '统计表'app = xw.App(visible = True ,add_book= False)
# 打开工作簿
workbooh = app.books.open(filr_path)
# 获取指定的工作表
worksheet = workbooh.sheets[sheet_name]
# 读取工作表中的所有信息
value = worksheet.range('A2').expand('table').value
# 创建一个空字典用于按产品名称来分类存放数据
data = dict()
#按行遍历工作表数据
for i in range(len(value)):# 获取当前行的第一个空格中的数据product_name = value[i][1]# 如果没有该产品if product_name not in data:# 创建一个与当前行名称对应的空列表data[product_name] = []# 将当前数据追加当列表中data[product_name].append(value[i])for key,value in data.items():# 新建目标工作簿new_workbook = app.books.add()#新建工作表new_sheet = new_workbook.sheets.add(key)# 将要拆分的工作表的列标题复制到新建的工作表中new_sheet['A1'].value = worksheet['A1:H1'].value# 将数据复制new_sheet['A2'].value = valuenew_workbook.save('{}.xlsx'.format(key))app.quit()

使用Python批量处理工作簿和工作表相关推荐

  1. python创建工作簿_创建工作簿、工作表和写入单元格

    ---------------------------------------------------------------- 学完本课程可继续巩固篇:https://edu.51cto.com/c ...

  2. python读取Excel工作簿、工作表

    python读取Excel工作簿.工作表 最近需要用python操作Excel表格,因此大概学习了一下如何操作,表较简单但是很实用,这里记录一些简单的操作. import xlrd # 读取工作簿 w ...

  3. python中openpyxl模块对excel的处理学习(一)新建工作簿,工作表的创建与命名

    openpyxl模块用于读写excel的xlsx等文件,不支持xls from openpyxl import Workbook, load_workbookdef openpyxl_test1(): ...

  4. VBA之批量进行工作簿及工作表循环查找内容

    SUB SplitRange'关闭屏幕刷新Application.ScreenUpdating = FALSE'禁用事件Application.EnableEvents = FALSE'禁止显示提示和 ...

  5. Tableau实战系列浏览 Tableau 环境(六) -工作簿和工作表

    前言 Tableau 使用的是工作簿和工作表文件结构,这与 Microsoft Excel 十分类似.工作簿包含工 作表,后者可以是工作表.仪表板或故事. 一个工作表包含单个视图以及其侧栏中的功能区. ...

  6. C#如何设置Excel文档保护——工作簿、工作表、单元格

    简介 Excel在工作和学习中应用广泛,是必不可少的数据统计与处理工具.对于一些重要的Excel文件,只供特殊人员查看.编辑或者防止重要数据对外泄露时,就需要设置文档保护,包括设置访问密码.设置文件只 ...

  7. VBA-- 实例1.2多工作簿多工作表的数据汇总

    实例 多工作簿多工作表的数据汇总 目标 excel中多表单据中特定cell中的内容汇总成数据条. demo分解 在实例1.1的基础上需要对工作簿进行操作. 依次打开工作簿用到了Dir()函数 因为不在 ...

  8. excel合并多工作簿同名工作表?

    今天跟大家分享一下excel合并多工作簿同名工作表? 1.如下图两个工作簿,都含有相同的工作表"销售部"现在我们想要将这两个工作簿中的销售部表格合并到一个表格中. 2.首先点击下图 ...

  9. 合并工作簿包含工作表名称

    Sub 合并工作簿包含工作表名称() '定义对话框变量 Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePi ...

最新文章

  1. CoordinatorLayout 和 AppBarLayout 实现的局部点击按钮实现折叠和展开
  2. css案例学习之div ul li a 实现导航效果
  3. html5 Web Workers
  4. ansible+powershell DSC 可以管理windows server了
  5. 这可能是最全面的 python 字符串拼接总结!多种方法选最优
  6. 当session失效后,无论点击那个页面,都找到顶端页面,跳到登录页面。
  7. shell数组中“和@的妙用
  8. 前端之JavaScript 02
  9. 数仓dw怎么建_从0建设离线数据仓库
  10. Python 代码覆盖率统计工具 coverage.py
  11. 计算机系统的组成doc,简述计算机系统的组成.doc
  12. 五月康乃馨,爱心献父母---母亲节快乐
  13. js 获取输入的首字母拼音
  14. 微信小程序云开发 操作数据库-简单数据的查询
  15. KONG网关和KONGA界面的入门使用,快速上手
  16. 【汇总】行为识别、时序行为检测、弱监督行为检测、时空行为定位论文代码(持续更新!!!)
  17. windows 生成数字证书
  18. 02-18 36kr文章爬取-1
  19. Access2003开发者扩展工具集概述(转)
  20. Excel VBA 高级编程-库存管理系统表

热门文章

  1. 电子计算机之父冯.诺依曼的主要贡献,约翰·冯·诺依曼,约翰·冯·诺依曼的生平,贡献等...
  2. php7.2获取年份的格式,7.7.2 获取zval的值及类型
  3. numpy数组如何将数组中的元素批量保留小数(或精确到指定位)?np.around()函数(与np.round()函数等价?)
  4. Intel Realsense D435使用生成器初始化多个摄像头(c语言vector)
  5. 连锁商店 状态压缩dp(女赛)
  6. Spring 使用注解@DependsOn控制Bean加载顺序
  7. rust货轮什么时候出现_与 Rust 在一起的四年
  8. SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享
  9. Mockito的使用(二)——@InjectMocks、@Spy、@Mock
  10. python语言具有使用变量需要先定义后使用的特点_3、Python语法入门之变量