1. 程式人生 > 其它 >利用xlwings將一個工作表,拆成多個工作簿

利用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應該會有更簡單的寫法,後面嘗試一下再貼出來