亲宝软件园·资讯

展开

Python批量处理工作簿和工作表 Python批量处理工作簿和工作表的实现示例

落春只在无意间 人气:0
想了解Python批量处理工作簿和工作表的实现示例的相关内容吗,落春只在无意间在本文为您仔细讲解Python批量处理工作簿和工作表的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python批量工作簿和工作表,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.sheets

for 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会在使用过程中生成一些文件名以"~$"开头的临时文件,如果有这些文件就跳过。

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

步骤

代码:

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()

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

步骤:

代码

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 xw

filr_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 = value
    new_workbook.save('{}.xlsx'.format(key))

app.quit()

加载全部内容

相关教程
猜你喜欢
用户评论