Python 如何在保留分组的同时按工作表拆分Excel工作簿

Python 如何在保留分组的同时按工作表拆分Excel工作簿,python,excel,pandas,xlrd,Python,Excel,Pandas,Xlrd,我正在做一些excel工作报告,每天都会收到一本从SSRS导出的书。这本书设置得很好,每一页都应用了分组,效果类似于透视表 然而,这本书有32页,我最终需要将每一页单独作为一份独立的报告发送出去。现在我正在手动拆分它们,但我想知道是否有一种方法可以在保留分组的同时自动执行此操作 我以前试过这样的方法: import xlrd import pandas as pd targetWorkbook = xlrd.open_workbook(r'report.xlsx', on_demand=Tr

我正在做一些excel工作报告,每天都会收到一本从SSRS导出的书。这本书设置得很好,每一页都应用了分组,效果类似于透视表

然而,这本书有32页,我最终需要将每一页单独作为一份独立的报告发送出去。现在我正在手动拆分它们,但我想知道是否有一种方法可以在保留分组的同时自动执行此操作

我以前试过这样的方法:

import xlrd 
import pandas as pd

targetWorkbook = xlrd.open_workbook(r'report.xlsx', on_demand=True)

xlsxDoc = pd.ExcelFile('report.xlsx') 

for sheet in targetWorkbook.sheet_names():
    reportDF = pd.read_excel(xlsxDoc, sheet)

    reportDF.to_excel("report - {}.xlsx".format(sheet))
但是,由于我正在将每个工作表转换为一个数据报,分组就丢失了


在python中,有多种方法可以读取excel文档或与之交互,但我无法找到一种清晰的方法来选择一张工作表并将其保存为自己的文档而不丢失分组。

这是我的完整答案。我使用了工作表().Move()方法。主要思想是使用win32com.client

这已在安装了Excel 2013和Python 3.7的Windows 10系统上进行了测试并运行。分组格式与工作表一起完整移动。我仍在努力使循环工作。我将在循环开始工作后再次修改我的答案

我的示例有3个工作表,每个工作表具有不同的分组(小计)格式

您还需要安装pywin32,它不是标准的库项。


作为参考,我通过使用vba将其自动化,并使用python将宏注入新书中,从而“解决”了这个问题。我想知道是否有一个纯python的替代方案。
#
# Refined .Move() method, save new file using Active Worksheet property.
#
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb0 = excel.Workbooks.Open(r'C:\python\so\original.xlsx')
excel.Visible = True

# Move sheet1.
wb0.Worksheets(1).Move()
excel.Application.ActiveWorkbook.SaveAs(r'C:\python\so\sheet1.xlsx')

# Move sheet2, which is now the front sheet.
wb0.Worksheets(1).Move()
excel.Application.ActiveWorkbook.SaveAs(r'C:\python\so\sheet2.xlsx')  

# Save single remaining sheet as sheet3.
wb0.SaveAs(r'C:\python\so\sheet3.xlsx')
wb0.Close()
excel.Application.Quit()
pip install pywin32