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

Posted

技术标签:

【中文标题】将多个工作簿中的数据复制并自动化到现有的主工作簿中,而不会丢失使用 python 的格式【英文标题】:Copy & automate data from multiple workbook into an existing Master workbook without losing formatting using python 【发布时间】:2019-12-10 18:39:41 【问题描述】:

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

我尝试过使用 xlwings 和 pywin 库。下面的 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()

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

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

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

【问题讨论】:

【参考方案1】:

为此使用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')

【讨论】:

这会完全保存到一个新的工作簿并且格式已经消失了 @Abdlfatah 看到这个:xlsxwriter.readthedocs.io/example_pandas_column_formats.html

以上是关于将多个工作簿中的数据复制并自动化到现有的主工作簿中,而不会丢失使用 python 的格式的主要内容,如果未能解决你的问题,请参考以下文章

将多个工作簿中的工作表复制到当前工作簿中

如何将文件夹中的多个源工作簿中的数据复制到另一个工作簿,然后另存为新工作簿

Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中

如何将一个 Excel 工作簿中的多个工作表合并成一个工作表?

自动更新外部工作簿中的值

Excel 宏,用于从工作簿中的主工作表更新其他工作表