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

相关推荐

  1. pythonexcel 工作簿

    2024-03-26 07:22:04       34 阅读
  2. pythonexcel 批量新增、删除工作

    2024-03-26 07:22:04       45 阅读
  3. pythonexcel 打印excel

    2024-03-26 07:22:04       37 阅读
  4. 使用 python excel 文件

    2024-03-26 07:22:04       39 阅读
  5. pythonexcel第二

    2024-03-26 07:22:04       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 07:22:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 07:22:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 07:22:04       82 阅读
  4. Python语言-面向对象

    2024-03-26 07:22:04       91 阅读

热门阅读

  1. docker简单使用1

    2024-03-26 07:22:04       34 阅读
  2. CentOS配置docker外部访问

    2024-03-26 07:22:04       44 阅读
  3. php 快速入门(四)

    2024-03-26 07:22:04       45 阅读
  4. FastAPI+React全栈开发04 FastAPI概述

    2024-03-26 07:22:04       29 阅读
  5. node.js常用的命令

    2024-03-26 07:22:04       35 阅读
  6. ARMd7 作业

    2024-03-26 07:22:04       32 阅读
  7. spring boot中使用spring cache

    2024-03-26 07:22:04       44 阅读
  8. arm iic通信

    2024-03-26 07:22:04       44 阅读