最近遇到需要将多个xls文件合并到一个新的xls文件内,每个xls文件对应新xls文件的一个sheet。考虑到以后可能会经常用到这个合并操作,故写了一个脚本,解放双手。
具体代码如下:
导入库
import xlrd, xlwt
import os
创建xls写入对象
def create_xls():
"""创建xls文档对象"""
wt = xlwt.Workbook()
# table = wt.add_sheet("sheet1", cell_overwrite_ok=True)
return wt
多xls文件合并到新的xls文件
def multi_xls_to_one_xls(path):
"""多个xls文件合并到一个xls文件,每个xls文件为一个新sheet"""
sheet_names = {"assettrade":"资金周转率(最近一年)",
"banktransfer":"银证流入流出",
"cumulativedaycost":"日成本(最近一年)",
"cumulativeyyield":"累计收益率(近一年收益率)",
"hisdeliver":"每日买入证券总额(资金账户)",
"stockdayprofit":"股票日盈亏额(资金账户)",
"yearyield":"年收益率"}
os.chdir("/")
os.chdir(path) #进入xls文件读取目录
wt = create_xls() # 创建文件xlwt写入对象
target_list = ['demo1.xls', 'demo2.xls'] #目标文件
for each in os.listdir("."):
if each in target_list:
rd = xlrd.open_workbook(each) #打开目标文件
table_rd = rd.sheet_by_name(rd.sheet_names()[0]) #选择目标文件的第一个sheet(若目标目录只有一个文件)
table_wt = wt.add_sheet(each) #以文件名作为sheet名创建新的sheet
# table_rd.nrows 获取行书, table_rd.ncols 获取列数
for i in range(table_rd.nrows):
for j in range(table_rd.ncols):
table_wt.write(i,j, table_rd.cell(i,j).value) #读取目标文件的数据并写入
wt.save("demo3.xls") #保存
调用
if __name__ == "__main__":
multi_xls_to_one_xls(r"C:\Users\Administrator\Desktop\xxxx\scripts")