使用Python第三方库xlwings将单个excel工作表快速拆分为多个工作表(附打包好的exe文件)

您所在的位置:网站首页 excel快速拆分多个文件怎么操作 使用Python第三方库xlwings将单个excel工作表快速拆分为多个工作表(附打包好的exe文件)

使用Python第三方库xlwings将单个excel工作表快速拆分为多个工作表(附打包好的exe文件)

2024-07-09 20:17| 来源: 网络整理| 查看: 265

使用Python第三方库xlwings将单个excel工作表快速拆分为多个工作表(附打包好的exe文件) 资源链接

CSDN:https://download.csdn.net/download/qq_55292642/21947229 百度网盘链接:https://pan.baidu.com/s/1ppHsTmHQPViKhnDEwYxwqA 提取码:wzxy 在这里插入图片描述

问题背景

使用Excel处理整理数据时,有时需要将一个工作表按某个字段拆分成多个工作表。总表呢处理数据方便,一起就处理了,但展示效果就没有分表好。分表展示效果好,但如果每个表数据量不一致处理起来就很麻烦(如果一致可以使用Excel的工作组,批量操作多个分表),哪有没有什么办法能将总表快速的拆分为分表呢?

上百度搜索多半是使用数据透视表,虽然也能达到效果,但使用数据透视表对后续处理数据不是很方便。

之前一直使用的是筛选+CV大法(复制粘贴),这样效率太慢,处理少量的分表需求可以,但分表多了之后,就很麻烦了。所以之前有一段时间直接使用的是总表,就不想用分表了。

后面发现python可以完美解决这个问题,本文参考了一些其他博主的文章,同时做了一些改进,因为有时Python环境不是很好搭建,或者在其他电脑上临时使用,所以我最后使用pyinstaller将python源代码打包成exe可执行文件,可在没有python的电脑上使用(就是文件大小有些大)。

具体案例

现有下面这种分表 在这里插入图片描述 想把它按班级拆成4个分表,如下图 在这里插入图片描述

python源代码及环境

本代码参考了下面这篇文章,但对原作者的代码进行了改进,具体python环境见文件environment.yml(但这个环境后面装了一些其他的库,不是所有都是必要的,仅作参考)

参考了博主“hhl931181316”的文章:Python按条件将一个工作表拆分为多个工作表

# Excel拆分.py ''' 使用Python第三方库xlwings按条件将单个excel工作表拆分为多个工作表 具体运行环境见文件environment.yml(但这个环境后面装了一些其他的库,不是所有都是必要的,仅作参考) ''' import os import xlwings as xw import pandas as pd # 引用相关的库 folder = os.getcwd() # 获取当前目录 files = os.listdir(folder) # 获取当前目录所有文件夹 files_xlsx = [] for file in files: fname,ext = os.path.splitext(file) if ext in [".xlsx"] and fname[: 2] != "~$": files_xlsx.append(file) # 筛选出xlsx文件并过滤xlsx隐藏文件 print("已找到如下Excel文件") for i in files_xlsx: print(i,end="\n") print("按任意键继续:") input() for xlsx in files_xlsx: print(f"即将拆分文件:\n{xlsx}\n") field_name = input("按什么拆分?") app = xw.App(visible=True, add_book=False) workbook = app.books.open(xlsx) worksheet = workbook.sheets[0] sheet_names = [j.name for j in workbook.sheets] value = worksheet.range('A1').options(pd.DataFrame,header = 1, index = False, expand = 'table').value # 读取要拆分的工作表中的所有数据 data = value.groupby(field_name) for idx, group in data: if idx not in sheet_names: new_worksheet = workbook.sheets.add(idx) new_worksheet.range('A1').options(index = False).value = group workbook.sheets[idx].range('A1').options(index = False).value = group workbook.save() workbook.close() app.quit() print(f"\n{xlsx}||拆分完成.") print("全部拆分完成") input("按任意键退出")

environment.yml

name: excel channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - defaults dependencies: - argcomplete=1.12.3=pyhd3eb1b0_0 - backcall=0.2.0=pyhd3eb1b0_0 - ca-certificates=2021.7.5=haa95532_1 - certifi=2021.5.30=py37haa95532_0 - colorama=0.4.4=pyhd3eb1b0_0 - debugpy=1.4.1=py37hd77b12b_0 - decorator=5.0.9=pyhd3eb1b0_0 - importlib_metadata=3.10.0=hd3eb1b0_0 - ipykernel=6.2.0=py37haa95532_1 - ipython=7.26.0=py37hd4e2768_0 - ipython_genutils=0.2.0=pyhd3eb1b0_1 - jedi=0.18.0=py37haa95532_1 - jupyter_client=6.1.12=pyhd3eb1b0_0 - jupyter_core=4.7.1=py37haa95532_0 - matplotlib-inline=0.1.2=pyhd3eb1b0_2 - openssl=1.1.1k=h2bbff1b_0 - parso=0.8.2=pyhd3eb1b0_0 - pickleshare=0.7.5=pyhd3eb1b0_1003 - pip=21.2.2=py37haa95532_0 - prompt-toolkit=3.0.17=pyh06a4308_0 - pygments=2.10.0=pyhd3eb1b0_0 - python=3.7.4=h5263a28_0 - python-dateutil=2.8.2=pyhd3eb1b0_0 - pyzmq=22.2.1=py37hd77b12b_1 - setuptools=52.0.0=py37haa95532_0 - six=1.16.0=pyhd3eb1b0_0 - sqlite=3.36.0=h2bbff1b_0 - tornado=6.1=py37h2bbff1b_0 - traitlets=5.0.5=pyhd3eb1b0_0 - typing_extensions=3.10.0.0=pyh06a4308_0 - vc=14.2=h21ff451_1 - vs2015_runtime=14.27.29016=h5e58377_2 - wcwidth=0.2.5=py_0 - wheel=0.37.0=pyhd3eb1b0_0 - wincertstore=0.2=py37_0 - zipp=3.5.0=pyhd3eb1b0_0 - pip: - altgraph==0.17 - et-xmlfile==1.1.0 - future==0.18.2 - importlib-metadata==4.6.4 - numpy==1.21.2 - openpyxl==3.0.7 - pandas==1.3.2 - pefile==2021.5.24 - pyinstall==0.1.4 - pyinstaller==4.5.1 - pyinstaller-hooks-contrib==2021.2 - pytz==2021.1 - pywin32==301 - pywin32-ctypes==0.2.0 - xlsxwriter==3.0.1 - xlwings==0.24.7 prefix: D:\InPrg\ProPrg\Prging\Anaconda3\envs\excel 使用方法

以使用exe可执行文件为例: 1.先新建一个文件夹,将要拆分的Excel表复制到这个文件夹: 在这里插入图片描述

然后将python源代码或者exe文件也复制到这个文件夹: 在这里插入图片描述 3.运行程序 在这里插入图片描述 4.根据程序提示完成操作 在这里插入图片描述 在这里插入图片描述

6.完成效果 在这里插入图片描述

待改进的地方

程序能完成上述操作,但有些细节还不完善,后续会对其进行完善。 主要有以下不足:

添加的工作表在前面,不符合习惯添加的工作表没有设置格式,还需手动调整 后续 增加拆分为多个工作簿的功能增加合并功能 资源链接

CSDN:https://download.csdn.net/download/qq_55292642/21947229 百度网盘链接:https://pan.baidu.com/s/1ppHsTmHQPViKhnDEwYxwqA 提取码:wzxy 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3