栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python+Excel系列:案例八:按条件将一个工作表拆分为多个工作簿、按条件将一个工作表拆分为多个工作表

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python+Excel系列:案例八:按条件将一个工作表拆分为多个工作簿、按条件将一个工作表拆分为多个工作表

文章目录
  • 按条件将一个工作表拆分为多个工作簿
  • 按条件将一个工作表拆分为多个工作表

按条件将一个工作表拆分为多个工作簿
import xlwings as xw #导入xlwings模块
file_path = 'e:/table/text.xlsx' #给出来源工作簿的文件路径
sheet_name = 'sheetOne' #给出要拆分的工作表的名称
app = xw.App(visible=False,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)): #按行遍历工作表数据
    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 = xw.books.add() #新建目标工作簿
    new_worksheet = new_workbook.sheets.add(key) #在目标工作薄中新增工作表并命名为当前的产品名称
    new_worksheet['A1'].value = worksheet['A1:H1'].value #将要拆分的工作表的列标题复制到新建的工作表中
    new_worksheet['A2'].value = value #将当前产品名称下的数据复制到新建的工作表中
    new_workbook.save('{}.xlsx'.format(key)) #以当前产品名称作为文件名保存目标工作簿
app.quit()

代码解析:

第2~7行代码用于指定要拆分哪个工作簿中的哪个工作表,并读取这个工作表中的所有数据。第7行代码中的“A2”是指读取数据的起始单元格,可根据实际需求更改。

第9~13行代码中的for语句利用第8行代码中创建的空字典来按照产 品名称分类整理前面读取的数据。第10行代码中的value[i][1]用于按数 据区域的行和列确定分类依据,两个中括号中的值分别用于指定行序号 和列序号(均从0开始),例如,[0][0]代表第1行第1列,[0][1]代表第1 行第2列,[1][1]代表第2行第2列,依此类推。本案例的分类依据是“产 品名称”,该列位于整个数据区域的B列,也就是第2列,所以value后为 [i][1]。可根据实际需求设置分类依据

第14~19行代码中的for语句用于新建工作簿,并将前面分类整理好 的数据分别复制到这些新建工作簿的工作表中。第17行代码中,A1:H1 代表要拆分的工作表“统计表”的列标题单元格区域,A1则表示从新建工 作簿中工作表的单元格A1开始粘贴列标题单元格区域。第18行代码中 的A2是指从新建工作簿中工作表的单元格A2开始粘贴分类后的产品数 据。这3个参数可以根据实际需求更改

扩展(format()函数):

s1 = '{}今年{}岁。'.format('小明', 7)  #不设置拼接位置,按默认顺序拼接
s2 = '{1}今年{0}岁。'.format(7, '小明')  #用数字序号指定拼接位置
s3 = '{name}今年{age}岁。'.format(name='小明', age=7) #用变量名指定拼接位
print(s1)
print(s2)
print(s3)
按条件将一个工作表拆分为多个工作表
import xlwings as xw #导入xlwings模块
import pandas as pd
app = xw.App(visible=False,add_book=False)
workbook = app.books.open('e:\table\text.xlsx') #打开工作簿
worksheet = workbook.sheets[sheet_name] #选中要拆分的工作表
value = worksheet.range('A1').options(pd.DataFrame,header = 1,index = False,expand = 'table').value #读取要拆分的工作表数据
data = value.groupby('product_name') #将数据按照'product_name'分组
for idx,group in data:
    new_worksheet = workbook.sheets.add(idx) #在工作簿中新增工作表并命名为当前的产品名称
workbook.save()
workbook.close()
app.quit()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号