背景:每个月都有50份Excel数据,需要把这50份数据复制到同一个Excel文件中。
这里要用到xlwings。
代码如下:
import xlwings as xw
import os
def get_files(path):
"""
获取到指定路径下的Excel文件绝对路径
:param path: Excel文件所在文件夹路径
:return: Excel文件绝对路径构成的list
"""
files = []
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
files.append(file)
return files
def sheet_copy(path):
"""
复制sheet
:param path: 目标Excel文件路径
"""
# 创建Excel应用程序实例,visible=False设置程序执行不可见
app = xw.App(visible=False)
# 打开目标Excel文件
target_book = app.books.open(path)
files = get_files(r"C:\\files")
for file in files:
source_book = app.books.open(file)
# 复制工作表sheet1到目标文件中
source_book.sheets["sheet1"].copy(after=target_book.sheets[0])
# 保存目标文件
target_book.save()
# 关闭应用程序
app.quit()