利用xlwings将一个工作表,拆成多个工作簿
#将一个工作表,拆成多个工作簿
#导入xlwings
import xlwings as xw
#找到要拆的工作簿路径
file_path = '/Users/hugua/Desktop/python_practise/产品统计表.xlsx'
#找到工作簿中的工作表名称
sheet_name = '统计表'
#打开excel
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)):
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('/Users/hugua/Desktop/python_practise/{}.xlsx'.format(key)) #以当前产品名称作为文件名保存目标工作簿
#退出excel程序
app.quit()
感觉利用pandas应该会有更简单的写法,后面尝试一下再贴出来