python与excel第七节 拆分工作簿

news/2024/7/21 7:27:54 标签: python, excel, 开发语言, 拆分工作簿, xlwings

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

假设一个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.sheets[0]
   
# 将来源工作簿中的当前工作表复制到目标工作簿的第一个工作表之前
   
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.sheets[sheet_name]

# 从第二行开始时数据
value = worksheet.range('A2').expand('table').value

data =
dict()
for i in range(len(value)):
   
# 根据第2列进行分类
   
brand_name = value[i][2]
   
# 如果字典中没有该名称的产品,就新建一个
   
if brand_name not in data:
        data[brand_name] = []
    data[brand_name].append(value[i])

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


http://www.niftyadmin.cn/n/5450987.html

相关文章

webpack快速基础

文章目录 webpack快速基础1. 概念1.1 入口1.2 输出(output)1.3 loader1.4 插件(plugin) 2. 建立项目,用于测试功能2.1 安装webpack,2.2 创建webpack配置文件,2.3 配置package.json,运行项目 3. 配置 mode 开发环境4. 配置 entry 编…

vue3进阶

vue3中的组合式 API:依赖注入 | Vue.js Vue3 关于 provide、inject 的用法_inject provide-CSDN博客 响应式 API:进阶 | Vue.js

力扣爆刷第104天之CodeTop100五连刷6-10

力扣爆刷第104天之CodeTop100五连刷6-10 文章目录 力扣爆刷第104天之CodeTop100五连刷6-10一、15. 三数之和二、53. 最大子数组和三、912. 排序数组四、21. 合并两个有序链表五、1. 两数之和 一、15. 三数之和 题目链接:https://leetcode.cn/problems/3sum/descrip…

2.3 Mac OS安装Python环境

Mac OS安装Python环境 和 Linux 发行版类似,最新版的 Mac OS X 也会默认自带 Python 2.x。 我们可以在终端(Terminal)窗口中输入python命令来检测是否安装了 Python 开发环境,以及安装了哪个版本,如下所示&#xff1…

web渗透测试漏洞流程:红队资产信息收集之单个目标信息收集

端口爆破工具用法 Hydra 参数详解: -R 根据上一次进度继续破解 -S 使用SSL协议连接 -s 指定端口 -l 指定用户名 -L 指定用户名字典(文件) -p 指定密码破解 -P 指定密码字典(文件) -e 空密码探测和指定用户密码探测(ns) -M <FILE>指定目标列表文件一行一条 -…

kafka部署之简单密钥

一、说明 centos7.9kafka_2.13-2.7.0.tgzapache-zookeeper-3.8.0-bin.tar.gz官方文档&#xff1a;Apache Kafka 二、kafka配置 2.1、server.properties server.properties修改或增加如下配置 listenersSASL_PLAINTEXT://你的主机ip:9092 super.usersUser:admin authorizer…

c++初步

作业&#xff1a; 定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转 #include <iostream> #include &…

JetPack之Room入门

目录 一、简介1.1 主要组件1.2 三者关系 二、基础使用2.1 依赖导入2.2 Student 实体类定义2.3 StudentDao 操作接口类2.4 StudentDataBase 类2.5 RoomTestActivity 类 三、参考链接 一、简介 JetPack 中的 Room 是一个用于在 SQLite 数据库上提供抽象层的持久性库。它允许开发…