小妹丢来3张表,要求按格式整理成一张新excel表;3张表数据杂乱不是重点,重点是工期只有半天,说多了都是泪……
数据杂乱的话,整理好数据结构,每张表去遍历一遍,然后存入自建的数据库,再从数据库里导出需要的表也是可以实现的;既然工期紧张,这些就没时间去深入研究了,直接把原来3张表人工处理一下,确保相同的行与列,直接用行列定位的方式做简单的数据整合吧。
每张表前三行都是表头,前三列都是都是相同格式;每个企业有4行数据,经过手工处理每张表企业根据代码排序且相同,数据总量288条,最终需要整合成下面格式:
从3个表里取出相应的数据,每个企业分类并按照时间顺序排序,操作excel前记得先装好相应的库:
import xlrd
import xlwt
根据需求,要整合的数据创建一个类:
class company(object):
# 构造函数
def __init__(self):
self.time = ''
self.code = ''
self.name = ''
self.D = '' # 总经理类型
self.E = '' # 管理层类型
self.F = '' # 管理层比例
self.G = '' # 董事长类型
self.H = '' # 董事会类型
self.I = '' # 董事会比例
self.J = '' # CEO及董事长类型
self.K = '' # 公司规模
self.L = '' # 财务杠杆
self.M = '' # 资产净利润率
self.N = '' # 资本密集度
self.O = '' # 托宾Q
self.P = '' # 股利支付率
self.Q = '' # 行业
读取3张excel:
f_1 = xlrd.open_workbook(r'C:\Users\ysc\Desktop\1.xls')
f_2 = xlrd.open_workbook(r'C:\Users\ysc\Desktop\2.xlsx')
f_3 = xlrd.open_workbook(r'C:\Users\ysc\Desktop\3.xls')
# print(f_1.sheet_names()) # 获取所有sheet
f_1Sheet1 = f_1.sheet_by_index(0)
f_2Sheet1 = f_2.sheet_by_index(0)
f_3Sheet1 = f_3.sheet_by_index(0)
# rows_1 = f_1Sheet1.row_values(0) # 获取第1行内容
# cols_1 = Sheet1.col_values(0) # 获取第1列内容
由于每个企业有4行数据,且最终要按照时间排序,写个分段读取函数:
# 读excel
def read_excel(start, end):
code = ''
time = []
for i in range(start, end):
if i == 291:
time = selectionSort(time)
find_data(code, time, start, i)
for x in data:
print(x)
write_excel(data)
break
el