按条件将一个工作表拆分为多个工作簿
用Python的xlwings模块按条件将一个工作表拆分为多个工作簿
import xlwings as xw
'''
按条件将一个工作表拆分为多个工作簿
'''
# 给出来源工作簿的文件路径及工作簿名称
file_path = r'E:\pythonExample\01\产品统计表.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)):
# 获取当前行的产品名称,作为数据的分类依据
product_name = value[i][1]
if product_name not in data:
# 如果不存在,则创建一个与当前行的产品名称对应的空列表,用于存放当前行的数据
data[product_name] = []
# 将当前行的数据追加到当前行的产品名称对应的列表中
data[product_name].append(value[i])
print(data)
# 按产品名称遍历分类后的数据
for key,value in data.items():
new_workbook = app.books.add() # 新建目标工作簿
# 在目标工作簿中新增工作表,并命名为当前的产品名称
new_worksheet = new_workbook.sheets.add(key)
# 将要拆分的工作表的列标题复制到新建的工作表中
new_worksheet['A1'].value = worksheet['A1:F1'].value
#将当前产品名称下的数据复制写入到新建的工作表中
new_worksheet['A2'].value = value
# 保存目标工作簿,文件名称为当前产品名称
new_workbook.save('E:\\pythonExample\\01\\拆分后表\\{}.xlsx'.format(key))
app.quit()