将多个工作簿中的数据复制并自动复制到现有的Master工作簿中,而不会丢失使用python设置的格式

时间:2019-08-02 06:53:58

标签: python excel

我有多个Excel工作簿,它们的格式相同,但每月数据却不同。我想将这些数据复制到现有Master wkbook(与其他工作簿相同的数据格式)下的现有工作表中,并且不会丢失使用python的Master文件中的格式

我尝试使用xlwings和pywin32库。下面的xlwings代码能够将源wkbk的内容复制到结果wkbook中,但是可以复制到单独的工作表中。我希望将数据复制到Master wkbook的指定工作表中(两个库都产生相同的结果)

#Using xlwings
import xlwings as wx
path1='C:\\Users\\G852589\\data transfer\\data1.xlsx'
#path0 = 'C:\\Users\\G852589\\data transfer\\data2.xlsx'
path2='C:\\Users\\G852589\\data transfer\\Result.xlsx'
wb1 = xw.Book(path1)
wb2 = xw.Book(path2)

ws1 = wb1.sheets(1)
ws1.api.Copy(Before=wb2.sheets(1).api)
wb2.save()
wb2.app.quit()

#Using pywin32
import os
import win32com.client as win32
from win32com.client import Dispatch
path1='C:\\Users\\G852589\\data transfer\\data1.xlsx'
#path0 = 'C:\\Users\\G852589\\data transfer\\data2.xlsx'
path2='C:\\Users\\G852589\\data transfer\\Result.xlsx'

xl=Dispatch('Excel.Application')
xl.Visible = True
wb1= xl.Workbooks.Open(Filename=path1)
wb2= xl.Workbooks.Open(Filename=path2)
ws1 =wb1.Worksheets(1)

ws1.Copy(Before=wb2.Worksheets(1))
wb2.Close(SaveChanges=True)
xl.Quit()

我需要能够将多个wkbk工作表中的多个数据复制到结果工作簿中指定的现有工作表中

我已附上屏幕截图,以直观地表示我要实现的目标。数据1和2是原始数据文件,结果表是我希望我的主工作簿在复制文件后的样子。

https://i.stack.imgur.com/0G4lM.png

1 个答案:

答案 0 :(得分:0)

为此使用pandas库:

import pandas as pd
import os

# collect files names
files_list = os.listdir('files_folder')

# collect data frames from each file
data_list = []
for file in files_list:
    df = pd.read_excel('files_folder/'+file)
    data_list.append(df)

# concat all data frames into one
result = pd.concat(data_list, sort=True)
result.to_excel('final_data.xlsx')