python与excel第七节 拆分工作簿

一个工作簿中多个工作表拆分为多个工作簿

假设一个excle工作簿中有多个工作表,现在需要将每个工作表拆分为单独的工作簿。

例子:

import xlwings as xw
# 设置生成文件的路径
path = 'D:\\TEST\\dataIn'
# 源文件的路径
workbook_name = 'D:\\TEST\\dataIn\\产品表.xlsx'
app = xw.App(visible=False, add_book=False)
# 打开源文件
workbook = app.books.open(workbook_name)
# 遍历来源工作簿中的工作表
for i in workbook.sheets:
# 新建一个目标工作簿 workbook_split = app.books.add()
# 选择目标工作簿中的第一个工作表 sheet_split = workbook_split.sheets0
# 将来源工作簿中的当前工作表复制到目标工作簿的第一个工作表之前 i.api.Copy(Before=sheet_split.api)
# 输出文件,并命名 workbook_split.save(path + '\\{}.xlsx'.format(i.name))
app.quit()

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

假设一个工作表中有很多数据,现在需要根据某一列将其分类到不同的sheet里面。

例子:

import xlwings as xw
import pandas as pd

app = xw.App(visible=True,add_book=False)
workbook = app.books.open('D:\\TEST\\dataIn\\产品表.xlsx')
worksheet = workbook.sheets'厨具'
# 读取要拆分的工作表数据
value = worksheet.range('A1').options(pd.DataFrame,header=1,index=False,expand='table').value
# 将数据按照 " 品牌 " 拆分, value.groupby() 返回的两个参数:组名 (str 类型 ) ,组的内容( DataFrame 类型)
data = value.groupby('品牌')
for idx,group in data:
# 以品牌名称为工作簿中新增工作表命名 new_worksheet = workbook.sheets.add(idx)
new_worksheet'A1'.options(index=False).value=group # 数据添加到新增的工作表
workbook.save()
workbook.close()
app.quit()

一个工作表的数据拆分到多个工作簿

假设一个工作表中有很多数据,现在需要根据某一列将其分类到不同的工作簿里面。

例子:

import xlwings as xw
# 读取源表数据到字典中,再根据 key 分类读取生成工作簿
out_path = 'D:\\TEST\\dataIn\\'
file_path = 'D:\\TEST\\dataIn\\产品表.xlsx'
sheet_name = '厨具'
app = xw.App(visible=True,add_book=False)
workbook = app.books.open(file_path)
worksheet = workbook.sheetssheet_name
# 从第二行开始时数据
value = worksheet.range('A2').expand('table').value

data = dict()
for i in range(len(value)):
# 根据第 2 列进行分类 brand_name = valuei2
# 如果字典中没有该名称的产品,就新建一个 if brand_name not in data:
databrand_name = \[\]
databrand_name.append(valuei)
print(data)
for key,value in data.items():
new_workbook = xw.books.add()
# 根据品牌为 sheet 名创建工作表 new_worksheet = new_workbook.sheets.add(key)
# 先复制列标题到新建工作表中 new_worksheet'A1'.value = worksheet'A1:D1'.value
# 复制数据到新建工作表中 new_worksheet'A2'.value = value
new_workbook.save(out_path + '{}.xlsx'.format(key))
app.quit()

相关推荐
彧azz1 小时前
图的存储结构详解:邻接矩阵的原理、实现与应用
开发语言·数据结构·学习·php
嵌入式学习菌1 小时前
Modbus‑RTU 数据类型分析
开发语言·单片机·bug
matlab代码2 小时前
基于matlab数字图像处理的指纹识别系统【源码68期】
开发语言·matlab
2601_962300812 小时前
机器学习贴士:使用Python编写MapReduce
hadoop·python·机器学习·mapreduce·数据处理
matlab代码2 小时前
基于matlab的水果识别系统(苹果香蕉菠萝梨桃子)【源码65期】
开发语言·matlab
xyz_CDragon3 小时前
GitHub上4个爆款AI开源Skill:拍照后不用P图,用Codex一键生成高级海报(附效果图+使用教程)
人工智能·python·github·codex·skill
wuyk5553 小时前
从零吃透 MQTT 通信|第 8 章 FreeRTOS 多任务架构下 MQTT 工程架构,任务拆分、队列解耦、临界区保护
c语言·开发语言·stm32·学习·架构
weixin199701080163 小时前
[特殊字符]《跨境二手ERP对接Back Market:标准化API + 7~10工作日技术合规审核实录》(附Python源码)
开发语言·python·pandas
尘客-追梦3 小时前
Day 01:插件化之前,先看清 ABI 这堵墙
开发语言·c++·qt
持敬chijing4 小时前
Python-数据类型-列表
开发语言·python·青少年编程