帮导师写的第一个python小代码,首先对文件夹下的所有excel表格按照修改日期进行排序,然后新数据(即列)覆盖旧数据。
# 正式代码
import xlrd as xr
import xlsxwriter
import os
#获取文件夹下所有excel文件的路径,放入列表
def getUrls(urls):
rootdir = "C:\\Users\\SDQ\\Desktop\\2019非正式成绩"
list = os.listdir(rootdir) # 列出文件夹下所有的目录与文件
dir_list = sorted(list, key=lambda x: os.path.getmtime(os.path.join(rootdir, x)))
for i in range(0, len(dir_list)):
# print(dir_list[i])
urls.append(rootdir+"\\"+dir_list[i])
#把每行Excel数据放入list,重复则对比,设置最大小时数,不重复则插入列表
def insert(data,datas):
flag = True
for d in datas:
if(data[0]=="班次编号"):
flag = False # 第二个标题不插入
break
if(data[2]==d[2]): #对比学号(学号在第3列)
flag = False # 如果重复则判断是否要修改小时数
if(data[len(data)-1]==""):
continue
d[len(d) - 1] = data[len(data) - 1]
if(flag): # 不重复则插入列表
datas.append(data)
url_xls = [] #路径集合
total_data = [] #数据集合
#设置要导入的文件的路径集合
getUrls(url_xls)
#读取Excel,把每一行存入all_data列表中
for i in range(0,len(url_xls)):
#print(url_xls[i])
x_y_data = xr.open_workbook(url_xls[i])
all_data = x_y_data.sheets()[0]
list = all_data._cell_values
for data in list:
insert(data,total_data)
#print("list size is " + str(len(list)))
# 创建一个工作簿并添加一个工作表
workbook = xlsxwriter.Workbook("C:\\Users\\SDQ\\Desktop\\5649(3).xls")
worksheet = workbook.add_worksheet()
font = workbook.add_format({"font_size":14}) #设置字体
for row in range(0,len(total_data)):
for col in range(0,len(total_data[row])):
worksheet.write(row, col, total_data[row][col], font)
# 关闭文件流
workbook.close()