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

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

步骤:

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

代码

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

到此这篇关于Python批量处理工作簿和工作表的实现示例的文章就介绍到这了,更多相关Python批量处理工作簿和工作表内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python自动化之批量处理工作簿和工作表

    一.批量新建并保存工作簿 import xlwings as xw # 导入库 # 启动Excel程序,但不新建工作簿 app = xw.App(visible = True, add_book = False) for i in range(6): workbook = app.books.add() # 新建工作簿 workbook.save(f'e:\\file\\test{i}.xlsx') # 保存新建的多个工作簿 workbook.close() # 关闭当前工作簿 app.quit

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

    目录 批量新建并保存工作簿 批量打开一个文件夹中的打开工作簿 批量重命名一个工作簿的所有工作表 批量重命名多个工作簿 批量重命名多个工作簿中的同名工作表 将一个工作簿的所有工作表批量复制到其他工作簿 按条件将一个工作表拆分为多个工作簿 批量新建并保存工作簿 代码 import xlwings as xw # 启动 Excel,但不新建工作簿 app = xw.App(visible=True,add_book=False) for i in range(5): #新建工作簿 workbook =

  • 使用python创建Excel工作簿及工作表过程图解

    1 配置信息: 创建 excel 工作簿之前的路径 2 创建工作簿 创建工作簿之后的路径 工作簿内容 3 创建工作表 工作簿信息 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们.

  • 基于Python批量生成指定尺寸缩略图代码实例

    这篇文章主要介绍了基于Python批量生成指定尺寸缩略图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近我们商城上架的应用越来越丰富了.但在应用上传的过程中遇到这样的一个问题:每一个上架的应用需要配置一个应用封面图片,并且封面的图片大小有指定的范围:300*175.而 我们制作完的图片一般都会大于这个尺寸.所以每次手动调整大小,又让我产生了偷懒的想法,想法有了那就开始行动吧. 代码 import requests as req fr

  • Python 实现多表和工作簿合并及一表按列拆分

    目录 一.相关知识点讲解 1.1 需要使用的相关库 1.2 os.walk(pwd) 1.3 os.path.join(path1,path2…) 1.4 案例解析 1.5 如何在一个列表中存放多个 DataFrame 数据 二.多工作簿合并(一) 2.1 将多个Excel合并到一个Excel中(每个Excel中只有一个sheet表) 三.多工作簿合并(二) 3.1 相关知识点讲解 3.1.1 xlsxwrite 的用法 3.1.2 xlrd 的用法 3.2 将多个 Excel 合并到一个 Ex

  • python利用openpyxl拆分多个工作表的工作簿的方法

    实现按目录拆分工作簿,源数据如下图 按目录拆分成N个文件. 上代码,没有找是否有整个sheet 复制的,先逐个cell复制解决问题.: # encoding: utf-8 """ @author: 陈年椰子 @contact: hndm@qq.com @version: 1.0 @file: Split_Xls.py @time: 2019/9/24 0028 15:04 说明 """ def Split_Xls(xls_file): from

  • Python操作Excel工作簿的示例代码(\*.xlsx)

    前言 Excel 作为流行的个人计算机数据处理软件,混迹于各个领域,在程序员这里也是常常被处理的对象,可以处理 Excel 格式文件的 Python 库还是挺多的,比如 xlrd.xlwt.xlutils.openpyxl.xlwings 等等,但是每个库处理 Excel 的方式不同,有些库在处理时还会有一些局限性. 接下来对比一下几个库的不同,然后主要记录一下 xlwings 这个库的使用,目前这是个人感觉使用起来比较方便的一个库了,其他的几个库在使用过程中总是有这样或那样的问题,不过在特定情

  • C#实现导入CSV文件到Excel工作簿的方法

    本文实例讲述了C#实现导入CSV文件到Excel工作簿的方法.分享给大家供大家参考.具体如下: 你必须在项目中添加对 Microsoft.Office.Core 的引用:from the .NET tab of the Visual Studio Add Reference dialog box, and the Microsoft Excel 12.0 Object Library (you can use 14.0 if you want, too, but nothing lower).

  • 用Python调用win命令行提高工作效率的实例

    作为程序猿,每天一上班打开电脑要做的时候就是打开各种工作所需的工具,如QQ,SQL Server,浏览器,编辑器等,每天都要一个个点,重复性的工作做多了也觉得烦(关键是影响了我上班倒水的时间). 于是就寻思着用python写一个简单的脚本来帮我一次性打开这些东西,解放我的双手,让我有时间去倒水. 环境是win10 64 Python3.6.5,使用到的模块是os,webbrowser. 其实实现的原理很简单,就是在相当于在win下的dos打开程序一样. 举个例子:如果我要打开我的qq. 在win

  • python能做哪方面的工作

    Python作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐.那么,Python 的应用领域有哪些呢? 概括起来,Python的应用领域主要有如下几个,这也是学完python将要从事的相关工作. Web应用开发 Python经常被用于 Web 开发.例如,通过 mod_wsgi 模块,Apache 可以运行用 Python 编写的 Web 程序.Python 定义了 WSGI 标准应用接口来协调 HTTP 服务器与基于 Python 的 Web 程序之间的通信. 不仅如此,一些 W

随机推荐